Skip site navigation (1)Skip section navigation (2)

FreeBSD Manual Pages

  
 
  

home | help
libcidr(3)		     Library Functions Manual		      libcidr(3)

NAME
     libcidr -- CIDR-style IP address manipulation functions

SYNOPSIS
     #include <libcidr.h>
     Library libcidr (-lcidr)

SUMMARY
     libcidr is a C library implementing a variety of functions to manipulate IP
     addresses	and  netblocks.   It  handles  both IPv4 and IPv6 networks, will
     transform them to and from text strings in a variety of formats, cram  them
     into  and	lever  them out of in_addr and in6_addr structures, and give you
     all sorts of stats about them.  Functions are provided also to tell  you  a
     few  things  about  the network any given CIDR block is in, what its parent
     and child networks are, and so on.  If you're really nice, libcidr may even
     cook you breakfast.

     The primary documentation for libcidr is maintained elsewhere, with a  full
     description of the functions, their options, and their return values.  Your
     installation  probably  has  a copy of the reference manual installed some-
     where, perhaps  in  /usr/local/share/doc/libcidr.	 Documentation	is  also
     available	on the webpage (see below).  This manpage is provided as a quick
     reference.

DESCRIPTION OF FUNCTIONS
     CIDR *cidr_addr_broadcast(const CIDR *cidr)
	   Return a CIDR structure describing the broadcast address of the  net-
	   work represented by cidr.

     CIDR *cidr_addr_hostmax(const CIDR *cidr)
	   Return  a  CIDR structure describing the "highest" host in the subnet
	   represented by cidr.

     CIDR *cidr_addr_hostmin(const CIDR *cidr)
	   Return a CIDR structure describing the "lowest" host  in  the  subnet
	   represented by cidr.

     CIDR *cidr_addr_network(const CIDR *cidr)
	   Return a CIDR structure describing the network address of the network
	   represented by cidr.

     CIDR *cidr_alloc(void)
	   Allocate and initialize a CIDR structure.

     int cidr_contains(const CIDR *big, const CIDR *little)
	   Determine  whether  little  is a CIDR block entirely contained within
	   the block described by big.	Return 0 if so, else non-zero.

     CIDR *cidr_dup(const CIDR *cidr)
	   Return a duplicate of cidr.

     int cidr_equals(const CIDR *first, const CIDR *second)
	   Determine whether first and second describe the same CIDR block.  Re-
	   turn 0 if they do, else non-zero.

     void cidr_free(CIDR *cidr)
	   Free the memory used by a CIDR *.

     CIDR *cidr_from_inaddr(const struct in_addr *in)
	   Generate a CIDR * based on a struct in_addr.

     CIDR *cidr_from_in6addr(const struct in6_addr *in)
	   Generate a CIDR * based on a struct in6_addr.

     CIDR *cidr_from_str(const char *str)
	   Parse str and return a CIDR * representing it.

     uint8_t *cidr_get_addr(const CIDR *cidr)
	   Return the address in an array of binary octets.

     uint8_t *cidr_get_mask(const CIDR *cidr)
	   Return the netmask in an array of binary octets.

     int cidr_get_pflen(const CIDR *cidr)
	   Return the length of the netmask prefix of cidr.

     int cidr_get_proto(const CIDR *cidr)
	   Return the protocol of an address.

     int cidr_is_v4mapped(const CIDR *addr)
	   Checks if an IPv6 address is in the IPv4-mapped range.

     CIDR **cidr_net_subnets(const CIDR *cidr)
	   Return a 2-element array of CIDR * 's representing the two  immediate
	   subnets  of	the  network described by cidr.  That is to say, the two
	   networks, within cidr, which have a netmask 1 bit longer.

     CIDR *cidr_net_supernet(const CIDR *cidr)
	   Return a CIDR * describing the "parent" network of  cidr.   That  is,
	   the network with a netmask 1 bit shorter, which wholly contains cidr.

     const char *cidr_numaddr(const CIDR *cidr)
	   Return  a  pointer  to a static string giving the number of total ad-
	   dresses available in the network described by cidr.	Do  not  attempt
	   to alter or free(3) this string.

     const char *cidr_numaddr_pflen(int pflen)
	   Return  a  pointer  to a static string giving the number of total ad-
	   dresses available in a network having a prefix length of  pflen.   Do
	   not attempt to alter or free(3) this string.  You probably don't want
	   to call this function manually often.

     const char *cidr_numhost(const CIDR *cidr)
	   Return  a  pointer  to a static string giving the number of addresses
	   available for hosts available in the network described by  cidr.   Do
	   not attempt to alter or free(3) this string.

     const char *cidr_numhost_pflen(int pflen)
	   Return  a  pointer  to a static string giving the number of addresses
	   available for hosts in a network having a prefix length of pflen.  Do
	   not attempt to alter or free(3) this string.  You probably don't want
	   to call this function manually often.

     struct in_addr *cidr_to_inaddr(const CIDR *cidr, struct in_addr *in)
	   Fill in a struct in_addr with the address given in cidr.  A user-sup-
	   plied struct in_addr is used if passed  in;	if  a  null  pointer  is
	   passed, a new one will be allocated, filled in, and returned.

     struct in6_addr *cidr_to_in6addr(const CIDR *cidr, struct in6_addr *in)
	   Fill  in  a	struct in6_addr with the address given in cidr.  A user-
	   supplied struct in6_addr is used if passed in; if a null  pointer  is
	   passed, a new one will be allocated, filled in, and returned.

     char *cidr_to_str(const CIDR *cidr, int flags)
	   Return a string version of the passed-in cidr, as described by flags.
	   By  default,  it will print in the standard address form for whatever
	   address family cidr represents, followed by a  slash,  and  then  the
	   prefix length of the netmask.

     const char *cidr_version(void)
	   Return a static string containing version information.

AUTHOR
     libcidr	 is	written     and    maintained	 by    Matthew	  Fuller
     <fullermd@over-yonder.net>.     Its    home    on	  the	 web	is    at
     <http://www.over-yonder.net/~fullermd/projects/libcidr>;  check  there  for
     updates and additional documentation.

FreeBSD ports 15.quarterly	   May 7, 2012			      libcidr(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=libcidr&sektion=3&manpath=FreeBSD+Ports+15.1.quarterly>

home | help