9.12. Fonctions et opérateurs sur les adresses réseau

Le Tableau 9.34, « Opérateurs cidr et inet » affiche les opérateurs disponibles pour les types cidr et inet. Les opérateurs <<, <<=, >>, >>= et && testent l'inclusion de sous-réseau. Ils ne considèrent que les parties réseau des deux adresses, ignorant toute partie hôte, et déterminent si une partie réseau est identique ou consitue un sous-réseau de l'autre.

Tableau 9.34. Opérateurs cidr et inet

Opérateur Description Exemple
< est plus petit que inet '192.168.1.5' < inet '192.168.1.6'
<= est plus petit que ou égal à inet '192.168.1.5' <= inet '192.168.1.5'
= est égal à inet '192.168.1.5' = inet '192.168.1.5'
>= est plus grand ou égal à inet '192.168.1.5' >= inet '192.168.1.5'
> est plus grand que inet '192.168.1.5' > inet '192.168.1.4'
<> n'est pas égal à inet '192.168.1.5' <> inet '192.168.1.4'
<< est contenu par inet '192.168.1.5' << inet '192.168.1/24'
<<= est contenu par ou égal à inet '192.168.1/24' <<= inet '192.168.1/24'
>> contient inet'192.168.1/24' >> inet '192.168.1.5'
>>= contient ou est égal à inet '192.168.1/24' >>= inet '192.168.1/24'
&& contient ou est contenu par inet '192.168.1/24' && inet '192.168.1.80/28'
~ NOT bit à bit ~ inet '192.168.1.6'
& AND bit à bit inet '192.168.1.6' & inet '0.0.0.255'
| OR bit à bit inet '192.168.1.6' | inet '0.0.0.255'
+ addition inet '192.168.1.6' + 25
- soustraction inet '192.168.1.43' - 36
- soustraction inet '192.168.1.43' - inet '192.168.1.19'

Le Tableau 9.35, « Fonctions cidr et inet » affiche les fonctions utilisables avec les types cidr et inet. Les fonctions abbrev, host, text ont principalement pour but d'offrir des formats d'affichage alternatifs.

Tableau 9.35. Fonctions cidr et inet

Fonction Type de retour Description Exemple Résultat
abbrev(inet) text format textuel d'affichage raccourci abbrev(inet '10.1.0.0/16') 10.1.0.0/16
abbrev(cidr) text format textuel d'affichage raccourci abbrev(cidr '10.1.0.0/16') 10.1/16
broadcast(inet) inet adresse de broadcast pour le réseau broadcast('192.168.1.5/24') 192.168.1.255/24
family(inet) int extraction de la famille d'adresse ; 4 pour IPv4, 6 pour IPv6 family('::1') 6
host(inet) text extraction de l'adresse IP en texte host('192.168.1.5/24') 192.168.1.5
hostmask(inet) inet construction du masque d'hôte pour le réseau hostmask('192.168.23.20/30') 0.0.0.3
masklen(inet) int extraction de la longueur du masque réseau masklen('192.168.1.5/24') 24
netmask(inet) inet construction du masque réseau netmask('192.168.1.5/24') 255.255.255.0
network(inet) cidr extraction de la partie réseau de l'adresse network('192.168.1.5/24') 192.168.1.0/24
set_masklen(inet, int) inet configure la longueur du masque réseau pour les valeurs inet set_masklen('192.168.1.5/24', 16) 192.168.1.5/16
set_masklen(cidr, int) cidr configure la longueur du masque réseau pour les valeurs cidr set_masklen('192.168.1.0/24'::cidr, 16) 192.168.0.0/16
text(inet) text extraction de l'adresse IP et de la longueur du masque réseau comme texte text(inet '192.168.1.5') 192.168.1.5/32
inet_same_family(inet, inet) boolean les adresses sont d'une même famille ? inet_same_family('192.168.1.5/24', '::1') false
inet_merge(inet, inet) cidr le plus petit réseau incluant les deux réseaux indiqués inet_merge('192.168.1.5/24', '192.168.2.5/24') 192.168.0.0/22

Toute valeur cidr peut être convertie en inet implicitement ou explicitement ; de ce fait, les fonctions indiquées ci-dessus comme opérant sur le type inet opèrent aussi sur le type cidr. (Lorsque les fonctions sont séparées pour les types inet et cidr, c'est que leur comportement peut différer.) Il est également permis de convertir une valeur inet en cidr. Dans ce cas, tout bit à la droite du masque réseau est silencieusement positionné à zéro pour créer une valeur cidr valide. De plus, une valeur de type texte peut être transtypée en inet ou cidr à l'aide de la syntaxe habituelle de transtypage : par exemple inet(expression) ou nom_colonne::cidr.

Le Tableau 9.36, « Fonctions macaddr » affiche les fonctions utilsables avec le type macaddr. La fonction trunc(macaddr) renvoie une adresse MAC avec les trois derniers octets initialisés à zéro. Ceci peut être utilisé pour associer le préfixe restant à un manufacturier.

Tableau 9.36. Fonctions macaddr

Fonction Type de retour Description Exemple Résultat
trunc(macaddr) macaddr initialiser les trois octets finaux à zéro trunc(macaddr '12:34:56:78:90:ab') 12:34:56:00:00:00

Le type macaddr supporte aussi les opérateurs relationnels standard (>, <=, etc.) de tri lexicographique, et les opérateurs arithmétiques sur les binaires (~, & et |) pour NOT, AND et OR