Browse Source

Plan 9 from Bell Labs 2004-07-08

David du Colombier 20 years ago
parent
commit
dc980bd50e
5 changed files with 53 additions and 10 deletions
  1. 2 2
      dist/replica/_plan9.db
  2. 2 2
      dist/replica/plan9.db
  3. 2 0
      dist/replica/plan9.log
  4. 14 6
      sys/man/2/ip
  5. 33 0
      sys/src/libip/bo.c

+ 2 - 2
dist/replica/_plan9.db

@@ -4853,7 +4853,7 @@ sys/man/2/hypot - 664 sys sys 944959693 302
 sys/man/2/intmap - 664 sys sys 1015091523 2622
 sys/man/2/ioproc - 664 sys sys 1030549010 3068
 sys/man/2/iounit - 664 sys sys 1015091523 1001
-sys/man/2/ip - 664 sys sys 1015701015 6986
+sys/man/2/ip - 664 sys sys 1089213089 7136
 sys/man/2/isalpharune - 664 sys sys 1015091523 1059
 sys/man/2/keyboard - 664 sys sys 950892860 2065
 sys/man/2/lock - 664 sys sys 1048643958 4692
@@ -11978,7 +11978,7 @@ sys/src/libhttpd/unallowed.c - 664 sys sys 1014930785 980
 sys/src/libhttpd/urlfmt.c - 664 sys sys 1014930785 425
 sys/src/libhttpd/urlunesc.c - 664 sys sys 1014930785 995
 sys/src/libip - 20000000775 sys sys 1016901402 0
-sys/src/libip/bo.c - 664 sys sys 944961727 414
+sys/src/libip/bo.c - 664 sys sys 1089213099 811
 sys/src/libip/classmask.c - 664 sys sys 944961726 622
 sys/src/libip/eipfmt.c - 664 sys sys 1014927942 2194
 sys/src/libip/equivip.c - 664 sys sys 944961726 146

+ 2 - 2
dist/replica/plan9.db

@@ -4853,7 +4853,7 @@ sys/man/2/hypot - 664 sys sys 944959693 302
 sys/man/2/intmap - 664 sys sys 1015091523 2622
 sys/man/2/ioproc - 664 sys sys 1030549010 3068
 sys/man/2/iounit - 664 sys sys 1015091523 1001
-sys/man/2/ip - 664 sys sys 1015701015 6986
+sys/man/2/ip - 664 sys sys 1089213089 7136
 sys/man/2/isalpharune - 664 sys sys 1015091523 1059
 sys/man/2/keyboard - 664 sys sys 950892860 2065
 sys/man/2/lock - 664 sys sys 1048643958 4692
@@ -11978,7 +11978,7 @@ sys/src/libhttpd/unallowed.c - 664 sys sys 1014930785 980
 sys/src/libhttpd/urlfmt.c - 664 sys sys 1014930785 425
 sys/src/libhttpd/urlunesc.c - 664 sys sys 1014930785 995
 sys/src/libip - 20000000775 sys sys 1016901402 0
-sys/src/libip/bo.c - 664 sys sys 944961727 414
+sys/src/libip/bo.c - 664 sys sys 1089213099 811
 sys/src/libip/classmask.c - 664 sys sys 944961726 622
 sys/src/libip/eipfmt.c - 664 sys sys 1014927942 2194
 sys/src/libip/equivip.c - 664 sys sys 944961726 146

+ 2 - 0
dist/replica/plan9.log

@@ -15835,3 +15835,5 @@
 1089084659 6 c 386/bin/auth/secstored - 775 sys sys 1089084068 194348
 1089084659 7 c 386/bin/aux/vga - 775 sys sys 1089084069 300531
 1089084659 8 c sys/man/2/9p - 664 sys sys 1089084170 15221
+1089214223 0 c sys/man/2/ip - 664 sys sys 1089213089 7136
+1089214223 1 c sys/src/libip/bo.c - 664 sys sys 1089213099 811

+ 14 - 6
sys/man/2/ip

@@ -1,6 +1,6 @@
 .TH IP 2
 .SH NAME
-eipfmt, parseip, parseipmask, v4parseip, v4parsecidr, parseether, myipaddr, myetheraddr, maskip, equivip, defmask, isv4, v4tov6, v6tov4, nhgetl, nhgets, hnputl, hnputs, ptclbsum, readipifc \- Internet protocol
+eipfmt, parseip, parseipmask, v4parseip, v4parsecidr, parseether, myipaddr, myetheraddr, maskip, equivip, defmask, isv4, v4tov6, v6tov4, nhgetv, nhgetl, nhgets, hnputv, hnputl, hnputs, ptclbsum, readipifc \- Internet protocol
 .SH SYNOPSIS
 .B #include <u.h>
 .br
@@ -57,12 +57,18 @@ ushort	nhgets(void *p)
 uint	nhgetl(void *p)
 .PP
 .B
+uvlong	nhgetv(void *p)
+.PP
+.B
 void	hnputs(void *p, ushort v)
 .PP
 .B
 void	hnputl(void *p, uint v)
 .PP
 .B
+void	hnputv(void *p, uvlong v)
+.PP
+.B
 ushort	ptclbsum(uchar *a, int n)
 .PP
 .B
@@ -211,14 +217,16 @@ converts the V6 address,
 to a V4 address and puts the result in
 .IR v4ip .
 .PP
-.I Hnputs
-and
+.IR Hnputs ,
 .I hnputl
-are used to store 16-bit and 32-bit integers into IP big-endian form.
-.I Nhgets
 and
+.I hnputv
+are used to store 16-bit, 32-bit, and 64-bit integers, respectively, into IP big-endian form.
+.IR Nhgets ,
 .I nhgetl
-convert big-endian 2 and 4 byte quantities into integers.
+and
+.I nhgetv
+convert big-endian 2, 4 and 8 byte quantities into integers (or uvlongs).
 .PP
 .I Pctlbsum
 returns the one's complement checksum used in IP protocols, typically invoked as

+ 33 - 0
sys/src/libip/bo.c

@@ -2,6 +2,21 @@
 #include <libc.h>
 #include <ip.h>
 
+void
+hnputv(void *p, uvlong v)
+{
+	uchar *a;
+
+	a = p;
+	a[0] = v>>56;
+	a[1] = v>>48;
+	a[2] = v>>40;
+	a[3] = v>>32;
+	a[4] = v>>24;
+	a[5] = v>>16;
+	a[6] = v>>8;
+	a[7] = v;
+}
 
 void
 hnputl(void *p, uint v)
@@ -25,6 +40,24 @@ hnputs(void *p, ushort v)
 	a[1] = v;
 }
 
+uvlong
+nhgetv(void *p)
+{
+	uchar *a;
+	uvlong v;
+
+	a = p;
+	v = (uvlong)a[0]<<56;
+	v |= (uvlong)a[1]<<48;
+	v |= (uvlong)a[2]<<40;
+	v |= (uvlong)a[3]<<32;
+	v |= a[4]<<24;
+	v |= a[5]<<16;
+	v |= a[6]<<8;
+	v |= a[7]<<0;
+	return v;
+}
+
 uint
 nhgetl(void *p)
 {