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 manipu-
       late IP addresses and netblocks.	 It handles both IPv4  and  IPv6  net-
       works,  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 val-
       ues.  Your installation probably	has a copy of the reference manual in-
       stalled somewhere, perhaps in /usr/local/share/doc/libcidr.  Documenta-
       tion 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
	     network represented by cidr.

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

       CIDR *cidr_addr_hostmin(const CIDR *cidr)
	     Return a CIDR structure describing	the "lowest" host in the  sub-
	     net 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.
	     Return 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 imme-
	     diate 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  con-
	     tains cidr.

       const char *cidr_numaddr(const CIDR *cidr)
	     Return  a	pointer	 to a static string giving the number of total
	     addresses available in the	network	described by cidr.  Do not at-
	     tempt 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
	     addresses 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  ad-
	     dresses 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 ad-
	     dresses 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-
	     supplied 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 14.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+14.3.quarterly>

home | help