ip man page on Plan9

Man page or keyword search:  
man Server   549 pages
apropos Keyword Search (all sections)
Output format
Plan9 logo
[printable version]

IP(2)									 IP(2)

       eipfmt,	parseip, parseipmask, v4parseip, v4parsecidr, parseether, myi‐
       paddr, myetheraddr, maskip, equivip4, equivip6, ipcmp,  defmask,	 isv4,
       v4tov6,	v6tov4, nhgetv, nhgetl, nhgets, hnputv, hnputl, hnputs, ptclb‐
       sum, readipifc - Internet Protocol addressing

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

       int  eipfmt(Fmt*)

       vlong	 parseip(uchar *ipaddr, char *str)

       vlong	 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  equivip4(uchar *ipaddr1, uchar *ipaddr2)

       int  equivip6(uchar *ipaddr1, uchar *ipaddr2)

       int  ipcmp(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];

       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
       integers	 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,, or  /120.   The
       string  representation  of Ethernet addresses is exactly 12 hexadecimal

       Eipfmt is a print(2) 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
       address 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

       Parseether  converts  a	string	pointed to by str to a 6-byte Ethernet
       address starting at eaddr.   Myetheraddr	 reads	the  Ethernet  address
       string  from  file  dev/addr  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
       arguments are equal.  Equivip4 operates on v4 addresses, equivip6 oper‐
       ates  on v6 addresses.  Ipcmp is a macro that compares V6 addresses per

       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  4-byte  V4
       address, v4ip, to a V6 address and puts the  result  in	v6ip.	V6tov4
       converts	 the  V6  address,  v6ip,  to a 4-byte V4 address and puts the
       result in v4ip.

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

       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

	      the V4 broadcast address

	      the V4 all systems multicast address

	      the V4 all routers multicast address

	      the V6 all bits on address

	      the V6 null address, all zeros

	      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
       addresses  assigned  to	this  interface.  If the list ifc is supplied,
       that list is freed.  Thus, subsequent calls can be  used	 to  free  the
       list returned 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 */

	    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
       interface.  Net is ip&mask if the network is multipoint or  the	remote
       address if the network is point to point.


       print(2), ip(3)

                             _         _         _ 
                            | |       | |       | |     
                            | |       | |       | |     
                         __ | | __ __ | | __ __ | | __  
                         \ \| |/ / \ \| |/ / \ \| |/ /  
                          \ \ / /   \ \ / /   \ \ / /   
                           \   /     \   /     \   /    
                            \_/       \_/       \_/ 
More information is available in HTML format for server Plan9

List of man pages available for Plan9

Copyright (c) for man pages and the logo by the respective OS vendor.

For those who want to learn more, the polarhome community provides shell access and support.

[legal] [privacy] [GNU] [policy] [cookies] [netiquette] [sponsors] [FAQ]
Polarhome, production since 1999.
Member of Polarhome portal.
Based on Fawad Halim's script.
Vote for polarhome
Free Shell Accounts :: the biggest list on the net