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

FreeBSD Manual Pages

  
 
  

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

NAME
       eipfmt,	parseip, parseipmask, v4parseip, v4parsecidr, parseether, myi-
       paddr, myetheraddr, maskip, equivip,  defmask,  isv4,  v4tov6,  v6tov4,
       nhgetl,	nhgets,	 nhgetv, hnputl, hnputs, hnputv, ptclbsum, readipifc -
       Internet	protocol

SYNOPSIS
       #include	<u.h>
       #include	<libc.h>
       #include	<ip.h>

       int  eipfmt(Fmt*)

       ulong	 parseip(uchar *ipaddr,	char *str)

       ulong	 parseipmask(uchar *ipaddr, char *str)

       char*	 v4parseip(uchar *ipaddr, char *str)

       ulong	 v4parsecidr(uchar *addr, uchar	*mask, char *str)

       int  parseether(uchar *eaddr, char *str)

       int  myetheraddr(uchar *eaddr, char *dev)

       int  myipaddr(uchar *ipaddr, char *net)

       void maskip(uchar *from,	uchar *mask, uchar *to)

       int  equivip(uchar *ipaddr1, uchar *ipaddr2)

       uchar*	 defmask(uchar *ipaddr)

       int  isv4(uchar *ipaddr)

       void v4tov6(uchar *ipv6,	uchar *ipv4)

       void v6tov4(uchar *ipv4,	uchar *ipv6)

       ushort	 nhgets(void *p)

       uint nhgetl(void	*p)

       uvlong	 nhgetv(void *p)

       void hnputs(void	*p, ushort v)

       void hnputl(void	*p, uint v)

       void hnputv(void	*p, uvlong v)

       ushort	 ptclbsum(uchar	*a, int	n)

       Ipifc*	 readipifc(char	*net, Ipifc *ifc, int index)

       uchar	 IPv4bcast[IPaddrlen];

       uchar	 IPv4allsys[IPaddrlen];

       uchar	 IPv4allrouter[IPaddrlen];

       uchar	 IPallbits[IPaddrlen];

       uchar	 IPnoaddr[IPaddrlen];

       uchar	 v4prefix[IPaddrlen];

DESCRIPTION
       These routines are used by Internet Protocol (IP) programs  to  manipu-
       late  IP	and Ethernet addresses.	 Plan 9, by default, uses V6 format IP
       addresses.  Since V4 addresses fit into the V6 space, all IP  addresses
       can be represented.  IP addresses are stored as a string	of 16 unsigned
       chars,  Ethernet	addresses as 6 unsigned	chars.	Either V4 or V6	string
       representation can be used for IP addresses.   For  V4  addresses,  the
       representation  can  be	(up to)	4 decimal integers from	0 to 255 sepa-
       rated by	periods.  For V6 addresses, the	representation is  (up	to)  8
       hex  integers from 0x0 to 0xFFFF	separated by colons.  Strings of 0 in-
       tegers can be elided using two  colons.	 For  example,	FFFF::1111  is
       equivalent  to FFFF:0:0:0:0:0:0:1111.  The string representation	for IP
       masks is	a superset of the address representation.  It  includes	 slash
       notation	 that  indicates  the  number  of  leading 1 bits in the mask.
       Thus,   a    V4	  class	   C	mask	can    be    represented    as
       FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FFFF:FF00,	 255.255.255.0,	 or /120.  The
       string representation of	Ethernet addresses is exactly  12  hexadecimal
       digits.

       Eipfmt is a print((3)) formatter	for Ethernet (verb E) addresses, IP V6
       (verb I)	addresses, IP V4 (verb V) addresses, and IP V6 (verb M)	masks.

       Parseip	converts  a  string  pointed to	by str to a 16-byte IP address
       starting	at ipaddr.  As a concession to backwards compatibility,	if the
       string is a V4 address, the return value	is an  unsigned	 long  integer
       containing  the	big-endian V4 address.	If not,	the return value is 6.
       Parseipmask converts a string pointed to	by str to  a  6-byte  IP  mask
       starting	 at ipaddr.  It	too returns an unsigned	long big-endian	V4 ad-
       dress or	6.  Both routines return -1 on errors.

       V4parseip converts a string pointed to by str to	a 4-byte V4 IP address
       starting	at ipaddr.

       V4parsecidr converts a string of	the form addr/mask, pointed to by str,
       to a 4-byte V4 IP address starting at ipaddr and	a 4-byte  V4  IP  mask
       starting	at mask.

       Myipaddr	 returns  the first valid IP address in	the IP stack rooted at
       net.

       Parseether converts a string pointed to by str to a 6-byte Ethernet ad-
       dress starting at eaddr.	 Myetheraddr reads the Ethernet	address	string
       from file dev/1/stats and parses	it into	eaddr.	Both routines return a
       negative	number on errors.

       Maskip places the bit-wise AND of the IP	addresses pointed  to  by  its
       first two arguments into	the buffer pointed to by the third.

       Equivip	returns	non-zero if the	IP addresses pointed to	by its two ar-
       guments are equal.

       Defmask returns the standard class A, B,	or C mask for ipaddr.

       Isv4 returns non-zero if	the V6 address is in the V4 space, that	is, if
       it starts with 0:0:0:0:0:0:FFFF.	 V4tov6	converts the V4	address, v4ip,
       to a V6 address and puts	the result in v6ip.  V6tov4  converts  the  V6
       address,	v6ip, to a V4 address and puts the result in v4ip.

       Hnputs, hnputl, and hnputv are used to store 16-, 32-, and 64-bit inte-
       gers  into IP big-endian	form.  Nhgets, nhgetl, and nhgetv convert big-
       endian 2-, 4-, and 8-byte quantities into integers.

       Pctlbsum	returns	the one's complement checksum used  in	IP  protocols,
       typically invoked as
       hnputs(hdr->cksum, ~ptclbsum(data, len) & 0xffff);

       A  number of standard IP	addresses in V6	format are also	defined.  They
       are:

       IPv4bcast
	      the V4 broadcast address

       IPv4allsys
	      the V4 all systems multicast address

       IPv4allrouter
	      the V4 all routers multicast address

       IPallbits
	      the V6 all bits on address

       IPnoaddr
	      the V6 null address, all zeros

       v4prefix
	      the IP V6	prefix to all embedded V4 addresses

       Readipifc returns information about a particular	interface   (index  >=
       0) or all IP interfaces (index <	0) configured under a mount point net,
       default /net.  Each interface is	described by one Ipifc structure which
       in turn points to a linked list of Iplifc structures describing the ad-
       dresses	assigned to this interface.  If	the list ifc is	supplied, that
       list is freed.  Thus, subsequent	calls can be used to free the list re-
       turned by the previous call.  Ipifc is:

       typedef struct Ipifc
       {
	    Ipifc     *next;
	    Iplifc    *lifc;	     /*	local addressses */

	    /* per ip interface	*/
	    int	 index;		/* number of interface in ipifc	dir */
	    char dev[64];  /* associated physical device */
	     int  mtu;	    /* max transfer unit */

	    long validlt;  /* valid life time */
	     long preflt;	 /* preferred life time	*/
	    uchar     sendra6;	/* on == send router adv */
	    uchar     recvra6;	/* on == rcv router adv	*/

	    ulong     pktin;	     /*	packets	read */
	    ulong     pktout;	     /*	packets	written	*/
	    ulong     errin;	     /*	read errors */
	    ulong     errout;	     /*	write errors */
	    Ipv6rp    rp;	/* route advertisement params */
       } Ipifc;

       Iplifc is:

       struct Iplifc
       {
	    Iplifc    *next;

	    uchar     ip[IPaddrlen];
	    uchar     mask[IPaddrlen];
	    uchar     net[IPaddrlen];	       /* ip & mask */
	    ulong     preflt;		  /* preferred lifetime	*/
	    ulong     validlt;	     /*	valid lifetime */
       };

       Ipv6rp is: struct Ipv6rp	{      int  mflag;	 int  oflag;	   int
	maxraint; /*  max  route  adv  interval	 */	 int  minraint;	/* min
       route   adv   interval	*/	  int  linkmtu;	       int  reachtime;
	    int	 rxmitra;      int  ttl;      int  routerlt;  };

       Dev  contains the first 64 bytes	of the device configured with this in-
       terface.	 Net is	ip&mask	if the network is multipoint or	the remote ad-
       dress if	the network is point to	point.

SOURCE
       /src/libip

SEE ALSO
       print((3))

									 IP(3)

Want to link to this manual page? Use this URL:
<https://man.freebsd.org/cgi/man.cgi?query=ip&sektion=3&manpath=FreeBSD+15.0-RELEASE+and+Ports>

home | help