Types adresses réseau

PostgreSQL fournit des types pour le stockage des adresses IP et MAC. Il est préférable d'utiliser ces types aux types texte, car ils permettent la vérification d'erreur en entrée et plusieurs opérateurs et fonctions spécialisés.

Table 19. Types adresses réseau

NomStockageDescriptionÉtendue
cidr12 octetsréseaux IPréseaux IPv4 valides
inet12 octetshôtes et réseaux IPhôtes et réseaux IPv4 valides
macaddr6 octetsadresses MACformats habituels

IP v6 n'est pas encore supporté.

inet

Le type inet contient l'adresse IP de l'hôte, et optionnellement l'identité du sous réseau, le tout sur un champ. L'identité du sous réseau est représentée par le nombre de bits dans la partie réseau de l'adresse (le "netmask"). Si le netmask est de 32, la valeur n'indique pas un sous réseau mais un simple hôte. Notez que si vous acceptez seulement les réseaux, vous devriez utiliser le type cidrde préférence à inet.

Le format d'entrée de ce type est x.x.x.x/yx.x.x.x est une adresse IP et y le nombre de bits du masque de réseau. Si la partie /y n'est pas fournie, le masque de réseau est 32, et la valeur représente un simple hôte. À l'affichage, la partie /y est supprimée si le masque de réseau est 32.

cidr

Le type cidr contient une spécification du réseau IP. Les entrées/sorties suivent les conventions Classless Internet Domain Routing. Le format de spécification des classes réseaux est x.x.x.x/yx.x.x.x est le réseau et yle nombre de bits du masque de réseau. Si y est omis, il est calculé en utilisant les hypothèses du système de numération de classes ancien, sauf qu'elle sera étendue pour inclure au moins tous les octets de l'entrée.

Voici quelques exemples :

Table 20. Exemples de types entréecidr

Entrée CIDRCIDR affichéabréviation(CIDR)
192.168.100.128/25192.168.100.128/25192.168.100.128/25
192.168/24192.168.0.0/24192.168.0/24
192.168/25192.168.0.0/25192.168.0.0/25
192.168.1192.168.1.0/24192.168.1/24
192.168192.168.0.0/24192.168.0/24
128.1128.1.0.0/16128.1/16
128128.0.0.0/16128.0/16
128.1.2128.1.2.0/24128.1.2/24
10.1.210.1.2.0/2410.1.2/24
10.110.1.0.0/1610.1/16
1010.0.0.0/810/8

inet contre cidr

La différence essentielle entre inet et cidr est que inet accepte des valeurs de bits non-zero à la droite du masque de réseau, tandis que cidr ne le fait pas.

Tip

Si vous n'aimez pas les formats de sortie pour inet ou cidr, essayez les fonctions host(), text(), et abbrev().

macaddr

Le type macaddr stocke les adresses MAC, i.e., les adresses matérielles des cartes réseau ethernet (bien que les adresses MAC soient également utilisées pour d'autres choses). Les entrées sont acceptées dans divers formats, incluant

'08002b:010203'
'08002b-010203'
'0800.2b01.0203'
'08-00-2b-01-02-03'
'08:00:2b:01:02:03'

qui spécifieront la même adresse. Les majuscules et minuscules sont acceptées pour les nombres de a à f. La sortie est toujours de la dernière forme indiquée.

Le répertoire contrib/mac du source de PostgreSQL contient des outils qui peuvent être utilisés pour mapper des adresses MAC au nom du fabriquant du matériel.