9.12. Network Address Functions and Operators
  
   Table 9.36
  
  shows the operators
   available for the
  
   cidr
  
  and
  
   inet
  
  types.
   The operators
  
   <<
  
  ,
  
   <<=
  
  ,
  
   >>
  
  ,
  
   >>=
  
  , and
  
   &&
  
  test for subnet inclusion.  They
   consider only the network parts of the two addresses (ignoring any
   host part) and determine whether one network is identical to
   or a subnet of the other.
 
   
    Table 9.36. 
    
     cidr
    
    and
    
     inet
    
    Operators
   
  
| Operator | Description | Example | 
|---|---|---|
       
        <
       
       | 
      is less than | 
       
        inet '192.168.1.5' < inet '192.168.1.6'
       
       | 
     
       
        <=
       
       | 
      is less than or equal | 
       
        inet '192.168.1.5' <= inet '192.168.1.5'
       
       | 
     
       
        =
       
       | 
      equals | 
       
        inet '192.168.1.5' = inet '192.168.1.5'
       
       | 
     
       
        >=
       
       | 
      is greater or equal | 
       
        inet '192.168.1.5' >= inet '192.168.1.5'
       
       | 
     
       
        >
       
       | 
      is greater than | 
       
        inet '192.168.1.5' > inet '192.168.1.4'
       
       | 
     
       
        <>
       
       | 
      is not equal | 
       
        inet '192.168.1.5' <> inet '192.168.1.4'
       
       | 
     
       
        <<
       
       | 
      is contained by | 
       
        inet '192.168.1.5' << inet '192.168.1/24'
       
       | 
     
       
        <<=
       
       | 
      is contained by or equals | 
       
        inet '192.168.1/24' <<= inet '192.168.1/24'
       
       | 
     
       
        >>
       
       | 
      contains | 
       
        inet '192.168.1/24' >> inet '192.168.1.5'
       
       | 
     
       
        >>=
       
       | 
      contains or equals | 
       
        inet '192.168.1/24' >>= inet '192.168.1/24'
       
       | 
     
       
        &&
       
       | 
      contains or is contained by | 
       
        inet '192.168.1/24' && inet '192.168.1.80/28'
       
       | 
     
       
        ~
       
       | 
      bitwise NOT | 
       
        ~ inet '192.168.1.6'
       
       | 
     
       
        &
       
       | 
      bitwise AND | 
       
        inet '192.168.1.6' & inet '0.0.0.255'
       
       | 
     
       
        |
       
       | 
      bitwise OR | 
       
        inet '192.168.1.6' | inet '0.0.0.255'
       
       | 
     
       
        +
       
       | 
      addition | 
       
        inet '192.168.1.6' + 25
       
       | 
     
       
        -
       
       | 
      subtraction | 
       
        inet '192.168.1.43' - 36
       
       | 
     
       
        -
       
       | 
      subtraction | 
       
        inet '192.168.1.43' - inet '192.168.1.19'
       
       | 
     
  
   Table 9.37
  
  shows the functions
   available for use with the
  
   cidr
  
  and
  
   inet
  
  types.  The
  
   abbrev
  
  ,
  
   host
  
  ,
   and
  
   text
  
  functions are primarily intended to offer alternative display
   formats.
 
   
    Table 9.37. 
    
     cidr
    
    and
    
     inet
    
    Functions
   
  
  Any
  
   cidr
  
  value can be cast to
  
   inet
  
  implicitly
   or explicitly; therefore, the functions shown above as operating on
  
   inet
  
  also work on
  
   cidr
  
  values.  (Where there are
   separate functions for
  
   inet
  
  and
  
   cidr
  
  , it is because
   the behavior should be different for the two cases.)
   Also, it is permitted to cast an
  
   inet
  
  value to
  
   cidr
  
  .
   When this is done, any bits to the right of the netmask are silently zeroed
   to create a valid
  
   cidr
  
  value.
   In addition,
   you can cast a text value to
  
   inet
  
  or
  
   cidr
  
  using normal casting syntax: for example,
  
   inet(
   
    
  or
  
     expression
    
   
   )
  
   
    
  .
 
     colname
    
   
   ::cidr
  
  
   Table 9.38
  
  shows the functions
   available for use with the
  
   macaddr
  
  type.  The function
  
   
  returns a MAC
   address with the last 3 bytes set to zero.  This can be used to
   associate the remaining prefix with a manufacturer.
 
    trunc(
    
  
     macaddr
    
    )
   
   
    Table 9.38. 
    
     macaddr
    
    Functions
   
  
  The
  
   macaddr
  
  type also supports the standard relational
    operators (
  
   >
  
  ,
  
   <=
  
  , etc.) for
    lexicographical ordering, and the bitwise arithmetic operators
    (
  
   ~
  
  ,
  
   &
  
  and
  
   |
  
  )
    for NOT, AND and OR.
 
  
   Table 9.39
  
  shows the functions
   available for use with the
  
   macaddr8
  
  type.  The function
  
   
  returns a MAC
   address with the last 5 bytes set to zero.  This can be used to
   associate the remaining prefix with a manufacturer.
 
    trunc(
    
  
     macaddr8
    
    )
   
   
    Table 9.39. 
    
     macaddr8
    
    Functions
   
  
  The
  
   macaddr8
  
  type also supports the standard relational
    operators (
  
   >
  
  ,
  
   <=
  
  , etc.) for
    ordering, and the bitwise arithmetic operators (
  
   ~
  
  ,
  
   &
  
  and
  
   |
  
  ) for NOT, AND and OR.