IP a MAC – formát, rozsah hodnot, řazení, vyloučení duplicit

01.12.2019

IP a MAC adresy jsou příkladem dat, u nichž je třeba zajistit správný formát, doménu hodnot a vyloučit duplicity. Dalším úkolem je zajistit i odpovídající řazení takovýchto dat, protože běžné řazení aplikované na obecné texty nám nebude vyhovovat.
Podívejme se, jak se s těmito úkoly vyrovnat v systému ObjectGears a jeho Konfigurační databázi. IP a MAC adresy jsou definované jako textové sloupce entit síťové vrstvy a vrstvy strojů operačního systému (OS Machine).

IP a MAC adresy jsou příkladem dat, u nichž je třeba zajistit správný formát, doménu hodnot, řazení a vyloučit duplicity.

Standardy pro IP a MAC

Standardy IP a MAC adres definují číselné nebo hexadecimální domény hodnot, úplné nebo zkrácené zápisy, oddělovače apod. Konkrétní pravidlo, které by se mělo na konkrétní příklady IP a MAC adres aplikovat, bude záviset na tom, zda chceme povolit jakoukoli hodnotu odpovídající standardu nebo budeme chtít aplikovat svoje vlastní, přísnější pravidla.
Standard například povoluje jako oddělovače v MAC adrese buď dvojtečku, tečku nebo pomlčku, ale ne kombinaci těchto znaků v jedné adrese (Příklad:  3D:F2:C9:A6:B3:4F nebo 3D-F2-C9-A6-B3-4F, ne však 3D-F2:C9-A6:B3-4F). I toto jsou validní formáty: 3DF2.C9A6.B34F nebo 3df2.c9a6.b34f. My však budeme chtít používat pouze dvojtečku a malá písmena.
Standard povoluje úplný nebo zkrácený zápis IPv6 adresy (Příklad:  2001:0db8:85a3:0000:0000:8a2e:0370:7334 nebo vynechané počáteční nuly 2001:db8:85a3: 0:0:8a2e:370:7334). Také je možné nahradit jednu nebo více po sobě jdoucích skupin obsahující pouze nuly za jednu prázdnou skupinu 2001:db8:85a3::8a2e:370:7334. My však budeme chtít používat vlastní zápis odpovídající některým z dalších doporučení ohledně IPv6 adres.
Důvodem je jednotnost vzhledu, kterou většina lidí preferuje. V obou případech nám pomohou regulární výrazy (Regex).

Regulární výraz

Ať už se rozhodnete příslušný regulární výraz napsat sami nebo si vyberete z množství výrazů, které napsali jiní uživatelé a sdílí je na různých webech podporujících spolupráci vývojářů (např. Stackoverflow), v ObjectGears stačí daný výraz zadat do definice textového sloupce (pole Regulární výraz) a vyplnit Chybové hlášení regulárního výrazu, které se uživateli zobrazí při nesplnění vzoru výrazu. Regulární výraz můžeme také použít i v podmínce pravidla.

Řazení dat

Dalším problémem je řazení a to v závislosti na zvoleném formátu. Např. adresu 10.123.222.105 chceme řadit jako větší za 10.123.222.98. Při běžném řazení by tomu tak nebylo. Pro tyto účely si vytvoříme sloupec typu desetinné číslo a do dané hodnoty adresu převedeme tak, že každému oktetu IP adresy přidělíme trojici čísel. Aktualizaci zajistíme pravidlem na dané třídě. Pořadí záznamů pak bude určeno hodnotami v tom sloupci.

Vyloučení duplicit v datech

Podobně můžeme chtít vyloučit duplicity. K tomu nám dobře poslouží určení sloupců v detailu třídy, které definují jedinečnost záznamů. Jedinečnost zajistit i pravidlem. V některých případech budeme chtít ověřovat to, zda daná adresa není použita v jiné třídě nebo jaký rozsah je přidělen určité VLAN. Toto nám zajistí pravidlo typu Skript, které se spustí před nebo po uložení záznamu a dohledá potřebné souvislosti v dalších třídách.