Browse Source

Plan 9 from Bell Labs 2007-08-15

David du Colombier 16 years ago
parent
commit
2e33844d2c

+ 15 - 16
dist/replica/_plan9.db

@@ -285,7 +285,7 @@
 386/bin/import - 775 sys sys 1179777651 102499
 386/bin/import - 775 sys sys 1179777651 102499
 386/bin/iostats - 775 sys sys 1178568280 98906
 386/bin/iostats - 775 sys sys 1178568280 98906
 386/bin/ip - 20000000775 sys sys 1016920851 0
 386/bin/ip - 20000000775 sys sys 1016920851 0
-386/bin/ip/6in4 - 775 sys sys 1186257752 90935
+386/bin/ip/6in4 - 775 sys sys 1187061208 91687
 386/bin/ip/dhcpclient - 775 sys sys 1178568281 92992
 386/bin/ip/dhcpclient - 775 sys sys 1178568281 92992
 386/bin/ip/dhcpd - 775 sys sys 1186112227 151324
 386/bin/ip/dhcpd - 775 sys sys 1186112227 151324
 386/bin/ip/dhcpleases - 775 sys sys 1186112228 85106
 386/bin/ip/dhcpleases - 775 sys sys 1186112228 85106
@@ -562,19 +562,19 @@
 386/lib/libgeometry.a - 664 sys sys 1168402366 50470
 386/lib/libgeometry.a - 664 sys sys 1168402366 50470
 386/lib/libhtml.a - 664 sys sys 1186370975 229202
 386/lib/libhtml.a - 664 sys sys 1186370975 229202
 386/lib/libhttpd.a - 664 sys sys 1181332906 99734
 386/lib/libhttpd.a - 664 sys sys 1181332906 99734
-386/lib/libip.a - 664 sys sys 1185420496 34710
+386/lib/libip.a - 664 sys sys 1187061208 34710
 386/lib/libl.a - 664 sys sys 1168402367 5372
 386/lib/libl.a - 664 sys sys 1168402367 5372
 386/lib/libmach.a - 664 sys sys 1184380786 807390
 386/lib/libmach.a - 664 sys sys 1184380786 807390
 386/lib/libmemdraw.a - 664 sys sys 1168402369 284092
 386/lib/libmemdraw.a - 664 sys sys 1168402369 284092
 386/lib/libmemlayer.a - 664 sys sys 1168402369 47360
 386/lib/libmemlayer.a - 664 sys sys 1168402369 47360
 386/lib/libmp.a - 664 sys sys 1181332906 79978
 386/lib/libmp.a - 664 sys sys 1181332906 79978
-386/lib/libndb.a - 664 sys sys 1185420497 64470
+386/lib/libndb.a - 664 sys sys 1187061208 64470
 386/lib/libplumb.a - 664 sys sys 1168402370 19408
 386/lib/libplumb.a - 664 sys sys 1168402370 19408
 386/lib/libregexp.a - 664 sys sys 1181507273 37290
 386/lib/libregexp.a - 664 sys sys 1181507273 37290
 386/lib/libscribble.a - 664 sys sys 1175972562 107238
 386/lib/libscribble.a - 664 sys sys 1175972562 107238
 386/lib/libsec.a - 664 sys sys 1181332908 646724
 386/lib/libsec.a - 664 sys sys 1181332908 646724
 386/lib/libstdio.a - 664 sys sys 1176432133 126062
 386/lib/libstdio.a - 664 sys sys 1176432133 126062
-386/lib/libsunrpc.a - 664 sys sys 1185420498 353148
+386/lib/libsunrpc.a - 664 sys sys 1187061209 353148
 386/lib/libthread.a - 664 sys sys 1184731247 71918
 386/lib/libthread.a - 664 sys sys 1184731247 71918
 386/lib/libventi.a - 664 sys sys 1181332909 97858
 386/lib/libventi.a - 664 sys sys 1181332909 97858
 386/mbr - 775 sys sys 1131317338 407
 386/mbr - 775 sys sys 1131317338 407
@@ -1403,7 +1403,7 @@ lib/face/48x48x4/x/xigh.1 - 664 sys sys 1142019024 1204
 lib/face/48x48x4/y - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/y - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8 - 20000000775 sys sys 1123100641 0
 lib/face/48x48x8 - 20000000775 sys sys 1123100641 0
-lib/face/48x48x8/.dict - 664 sys sys 1179510586 4082
+lib/face/48x48x8/.dict - 664 sys sys 1187107503 4193
 lib/face/48x48x8/Z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/Z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/a - 20000000775 sys sys 1056983599 0
 lib/face/48x48x8/a - 20000000775 sys sys 1056983599 0
 lib/face/48x48x8/a/alcortes.1 - 664 sys sys 1176753392 976
 lib/face/48x48x8/a/alcortes.1 - 664 sys sys 1176753392 976
@@ -1447,6 +1447,7 @@ lib/face/48x48x8/j - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/j/jmehat.1 - 664 sys sys 1176753392 837
 lib/face/48x48x8/j/jmehat.1 - 664 sys sys 1176753392 837
 lib/face/48x48x8/k - 20000000775 sys sys 1123100691 0
 lib/face/48x48x8/k - 20000000775 sys sys 1123100691 0
 lib/face/48x48x8/k/karen.1 - 664 sys sys 1057005135 1608
 lib/face/48x48x8/k/karen.1 - 664 sys sys 1057005135 1608
+lib/face/48x48x8/k/kix.1 - 664 sys sys 1187107466 779
 lib/face/48x48x8/k/kris.1 - 664 sys sys 1060142993 2364
 lib/face/48x48x8/k/kris.1 - 664 sys sys 1060142993 2364
 lib/face/48x48x8/l - 20000000775 sys sys 1059678230 0
 lib/face/48x48x8/l - 20000000775 sys sys 1059678230 0
 lib/face/48x48x8/l/lionkov.1 - 664 sys sys 1176753392 924
 lib/face/48x48x8/l/lionkov.1 - 664 sys sys 1176753392 924
@@ -7790,7 +7791,7 @@ sys/man/8/cron - 664 sys sys 1063858596 1867
 sys/man/8/dhcpd - 664 sys sys 1172959497 5572
 sys/man/8/dhcpd - 664 sys sys 1172959497 5572
 sys/man/8/disksim - 664 sys sys 1144150487 1476
 sys/man/8/disksim - 664 sys sys 1144150487 1476
 sys/man/8/drawterm - 664 sys sys 1181675938 1921
 sys/man/8/drawterm - 664 sys sys 1181675938 1921
-sys/man/8/fossilcons - 664 sys sys 1181331315 18400
+sys/man/8/fossilcons - 664 sys sys 1187134504 18542
 sys/man/8/fs - 664 sys sys 1172956177 15086
 sys/man/8/fs - 664 sys sys 1172956177 15086
 sys/man/8/fsconfig - 664 sys sys 1172956534 8878
 sys/man/8/fsconfig - 664 sys sys 1172956534 8878
 sys/man/8/fshalt - 664 sys sys 1173737264 862
 sys/man/8/fshalt - 664 sys sys 1173737264 862
@@ -7965,7 +7966,7 @@ sys/src/9/ip/arp.c - 664 sys sys 1184794688 11234
 sys/src/9/ip/chandial.c - 664 sys sys 1099020048 2295
 sys/src/9/ip/chandial.c - 664 sys sys 1099020048 2295
 sys/src/9/ip/devip.c - 664 sys sys 1161061185 24242
 sys/src/9/ip/devip.c - 664 sys sys 1161061185 24242
 sys/src/9/ip/eipconvtest.c - 664 sys sys 1022588098 3135
 sys/src/9/ip/eipconvtest.c - 664 sys sys 1022588098 3135
-sys/src/9/ip/esp.c - 664 sys sys 1187037502 17754
+sys/src/9/ip/esp.c - 664 sys sys 1187064283 19158
 sys/src/9/ip/ethermedium.c - 664 sys sys 1184244252 15419
 sys/src/9/ip/ethermedium.c - 664 sys sys 1184244252 15419
 sys/src/9/ip/gre.c - 664 sys sys 1187045851 5103
 sys/src/9/ip/gre.c - 664 sys sys 1187045851 5103
 sys/src/9/ip/icmp.c - 664 sys sys 1184946959 9498
 sys/src/9/ip/icmp.c - 664 sys sys 1184946959 9498
@@ -8168,7 +8169,7 @@ sys/src/9/port/chan.c - 664 sys sys 1146151714 34773
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/cis.c - 664 sys sys 1099761153 9248
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/debugalloc.c - 664 sys sys 1014931171 10402
 sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
 sys/src/9/port/dev.c - 664 sys sys 1146151714 8177
-sys/src/9/port/devaoe.c - 664 sys sys 1187034234 41526
+sys/src/9/port/devaoe.c - 664 sys sys 1187061517 41444
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devaudio.c - 664 sys sys 1170456648 21199
 sys/src/9/port/devbridge.c - 664 sys sys 1185994684 24171
 sys/src/9/port/devbridge.c - 664 sys sys 1185994684 24171
 sys/src/9/port/devcap.c - 664 sys sys 1178886040 4141
 sys/src/9/port/devcap.c - 664 sys sys 1178886040 4141
@@ -10345,7 +10346,7 @@ sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
 sys/src/cmd/fossil/cache.c - 664 sys sys 1180158132 43913
 sys/src/cmd/fossil/cache.c - 664 sys sys 1180158132 43913
-sys/src/cmd/fossil/check.c - 664 sys sys 1177432003 17448
+sys/src/cmd/fossil/check.c - 664 sys sys 1187136398 17470
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/dat.h - 664 sys sys 1177432005 7655
 sys/src/cmd/fossil/dat.h - 664 sys sys 1177432005 7655
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
@@ -10370,9 +10371,9 @@ sys/src/cmd/fossil/invariants - 664 sys sys 1042005509 4073
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
 sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
-sys/src/cmd/fossil/pack.c - 664 sys sys 1061530726 4682
+sys/src/cmd/fossil/pack.c - 664 sys sys 1187136436 4710
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
-sys/src/cmd/fossil/source.c - 664 sys sys 1177432004 20301
+sys/src/cmd/fossil/source.c - 664 sys sys 1187135867 20578
 sys/src/cmd/fossil/srcload.c - 664 sys sys 1042005510 4178
 sys/src/cmd/fossil/srcload.c - 664 sys sys 1042005510 4178
 sys/src/cmd/fossil/stdinc.h - 664 sys sys 1042005510 155
 sys/src/cmd/fossil/stdinc.h - 664 sys sys 1042005510 155
 sys/src/cmd/fossil/trunc.c - 664 sys sys 1042005511 280
 sys/src/cmd/fossil/trunc.c - 664 sys sys 1042005511 280
@@ -15852,8 +15853,6 @@ usr/glenda/lib/profile - 664 glenda glenda 1105128663 890
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.acme - 664 glenda glenda 1019860628 4753
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/readme.rio - 664 glenda glenda 1019860628 6370
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
 usr/glenda/tmp - 20000000775 glenda glenda 1018802620 0
-386/bin/ip/6in4 - 775 sys sys 1187061208 91687
-386/lib/libip.a - 664 sys sys 1187061208 34710
-386/lib/libndb.a - 664 sys sys 1187061208 64470
-386/lib/libsunrpc.a - 664 sys sys 1187061209 353148
-sys/src/9/port/devaoe.c - 664 sys sys 1187061517 41444
+386/bin/fossil/flchk - 775 sys sys 1187147720 237381
+386/bin/fossil/flfmt - 775 sys sys 1187147721 245386
+386/bin/fossil/fossil - 775 sys sys 1187147721 364045

+ 10 - 9
dist/replica/plan9.db

@@ -236,9 +236,9 @@
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fortune - 775 sys sys 1168402308 67356
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil - 20000000775 sys sys 1042005470 0
 386/bin/fossil/conf - 775 sys sys 1085077052 1506
 386/bin/fossil/conf - 775 sys sys 1085077052 1506
-386/bin/fossil/flchk - 775 sys sys 1180209225 237116
-386/bin/fossil/flfmt - 775 sys sys 1180209226 245137
-386/bin/fossil/fossil - 775 sys sys 1181851033 363780
+386/bin/fossil/flchk - 775 sys sys 1187147720 237381
+386/bin/fossil/flfmt - 775 sys sys 1187147721 245386
+386/bin/fossil/fossil - 775 sys sys 1187147721 364045
 386/bin/fossil/last - 775 sys sys 1168402310 63550
 386/bin/fossil/last - 775 sys sys 1168402310 63550
 386/bin/freq - 775 sys sys 1168402310 62040
 386/bin/freq - 775 sys sys 1168402310 62040
 386/bin/fs - 20000000775 sys sys 954380769 0
 386/bin/fs - 20000000775 sys sys 954380769 0
@@ -1403,7 +1403,7 @@ lib/face/48x48x4/x/xigh.1 - 664 sys sys 1142019024 1204
 lib/face/48x48x4/y - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/y - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x4/z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8 - 20000000775 sys sys 1123100641 0
 lib/face/48x48x8 - 20000000775 sys sys 1123100641 0
-lib/face/48x48x8/.dict - 664 sys sys 1179510586 4082
+lib/face/48x48x8/.dict - 664 sys sys 1187107503 4193
 lib/face/48x48x8/Z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/Z - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/a - 20000000775 sys sys 1056983599 0
 lib/face/48x48x8/a - 20000000775 sys sys 1056983599 0
 lib/face/48x48x8/a/alcortes.1 - 664 sys sys 1176753392 976
 lib/face/48x48x8/a/alcortes.1 - 664 sys sys 1176753392 976
@@ -1447,6 +1447,7 @@ lib/face/48x48x8/j - 20000000775 sys sys 1020895714 0
 lib/face/48x48x8/j/jmehat.1 - 664 sys sys 1176753392 837
 lib/face/48x48x8/j/jmehat.1 - 664 sys sys 1176753392 837
 lib/face/48x48x8/k - 20000000775 sys sys 1123100691 0
 lib/face/48x48x8/k - 20000000775 sys sys 1123100691 0
 lib/face/48x48x8/k/karen.1 - 664 sys sys 1057005135 1608
 lib/face/48x48x8/k/karen.1 - 664 sys sys 1057005135 1608
+lib/face/48x48x8/k/kix.1 - 664 sys sys 1187107466 779
 lib/face/48x48x8/k/kris.1 - 664 sys sys 1060142993 2364
 lib/face/48x48x8/k/kris.1 - 664 sys sys 1060142993 2364
 lib/face/48x48x8/l - 20000000775 sys sys 1059678230 0
 lib/face/48x48x8/l - 20000000775 sys sys 1059678230 0
 lib/face/48x48x8/l/lionkov.1 - 664 sys sys 1176753392 924
 lib/face/48x48x8/l/lionkov.1 - 664 sys sys 1176753392 924
@@ -7790,7 +7791,7 @@ sys/man/8/cron - 664 sys sys 1063858596 1867
 sys/man/8/dhcpd - 664 sys sys 1172959497 5572
 sys/man/8/dhcpd - 664 sys sys 1172959497 5572
 sys/man/8/disksim - 664 sys sys 1144150487 1476
 sys/man/8/disksim - 664 sys sys 1144150487 1476
 sys/man/8/drawterm - 664 sys sys 1181675938 1921
 sys/man/8/drawterm - 664 sys sys 1181675938 1921
-sys/man/8/fossilcons - 664 sys sys 1181331315 18400
+sys/man/8/fossilcons - 664 sys sys 1187134504 18542
 sys/man/8/fs - 664 sys sys 1172956177 15086
 sys/man/8/fs - 664 sys sys 1172956177 15086
 sys/man/8/fsconfig - 664 sys sys 1172956534 8878
 sys/man/8/fsconfig - 664 sys sys 1172956534 8878
 sys/man/8/fshalt - 664 sys sys 1173737264 862
 sys/man/8/fshalt - 664 sys sys 1173737264 862
@@ -7965,7 +7966,7 @@ sys/src/9/ip/arp.c - 664 sys sys 1184794688 11234
 sys/src/9/ip/chandial.c - 664 sys sys 1099020048 2295
 sys/src/9/ip/chandial.c - 664 sys sys 1099020048 2295
 sys/src/9/ip/devip.c - 664 sys sys 1161061185 24242
 sys/src/9/ip/devip.c - 664 sys sys 1161061185 24242
 sys/src/9/ip/eipconvtest.c - 664 sys sys 1022588098 3135
 sys/src/9/ip/eipconvtest.c - 664 sys sys 1022588098 3135
-sys/src/9/ip/esp.c - 664 sys sys 1187037502 17754
+sys/src/9/ip/esp.c - 664 sys sys 1187064283 19158
 sys/src/9/ip/ethermedium.c - 664 sys sys 1184244252 15419
 sys/src/9/ip/ethermedium.c - 664 sys sys 1184244252 15419
 sys/src/9/ip/gre.c - 664 sys sys 1187045851 5103
 sys/src/9/ip/gre.c - 664 sys sys 1187045851 5103
 sys/src/9/ip/icmp.c - 664 sys sys 1184946959 9498
 sys/src/9/ip/icmp.c - 664 sys sys 1184946959 9498
@@ -10345,7 +10346,7 @@ sys/src/cmd/fossil/build - 664 sys sys 1042005505 449
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/buildsh - 775 sys sys 1042005505 561
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
 sys/src/cmd/fossil/bwatch.c - 664 sys sys 1042005505 6754
 sys/src/cmd/fossil/cache.c - 664 sys sys 1180158132 43913
 sys/src/cmd/fossil/cache.c - 664 sys sys 1180158132 43913
-sys/src/cmd/fossil/check.c - 664 sys sys 1177432003 17448
+sys/src/cmd/fossil/check.c - 664 sys sys 1187136398 17470
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/conf.rc - 775 sys sys 1084333190 1416
 sys/src/cmd/fossil/dat.h - 664 sys sys 1177432005 7655
 sys/src/cmd/fossil/dat.h - 664 sys sys 1177432005 7655
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
 sys/src/cmd/fossil/deadlock - 775 sys sys 1042005506 413
@@ -10370,9 +10371,9 @@ sys/src/cmd/fossil/invariants - 664 sys sys 1042005509 4073
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
 sys/src/cmd/fossil/last.c - 664 sys sys 1087005593 812
 sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/mkfile - 664 sys sys 1139667242 2640
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
 sys/src/cmd/fossil/nobwatch.c - 664 sys sys 1042005509 329
-sys/src/cmd/fossil/pack.c - 664 sys sys 1061530726 4682
+sys/src/cmd/fossil/pack.c - 664 sys sys 1187136436 4710
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
 sys/src/cmd/fossil/periodic.c - 664 sys sys 1061530726 1087
-sys/src/cmd/fossil/source.c - 664 sys sys 1177432004 20301
+sys/src/cmd/fossil/source.c - 664 sys sys 1187135867 20578
 sys/src/cmd/fossil/srcload.c - 664 sys sys 1042005510 4178
 sys/src/cmd/fossil/srcload.c - 664 sys sys 1042005510 4178
 sys/src/cmd/fossil/stdinc.h - 664 sys sys 1042005510 155
 sys/src/cmd/fossil/stdinc.h - 664 sys sys 1042005510 155
 sys/src/cmd/fossil/trunc.c - 664 sys sys 1042005511 280
 sys/src/cmd/fossil/trunc.c - 664 sys sys 1042005511 280

+ 10 - 0
dist/replica/plan9.log

@@ -49972,3 +49972,13 @@
 1187062204 2 c 386/lib/libndb.a - 664 sys sys 1187061208 64470
 1187062204 2 c 386/lib/libndb.a - 664 sys sys 1187061208 64470
 1187062204 3 c 386/lib/libsunrpc.a - 664 sys sys 1187061209 353148
 1187062204 3 c 386/lib/libsunrpc.a - 664 sys sys 1187061209 353148
 1187062204 4 c sys/src/9/port/devaoe.c - 664 sys sys 1187061517 41444
 1187062204 4 c sys/src/9/port/devaoe.c - 664 sys sys 1187061517 41444
+1187065804 0 c sys/src/9/ip/esp.c - 664 sys sys 1187064283 19158
+1187109004 0 c lib/face/48x48x8/.dict - 664 sys sys 1187107503 4193
+1187109004 1 a lib/face/48x48x8/k/kix.1 - 664 sys sys 1187107466 779
+1187136004 0 c sys/man/8/fossilcons - 664 sys sys 1187134504 18542
+1187136004 1 c sys/src/cmd/fossil/source.c - 664 sys sys 1187135867 20578
+1187137803 0 c sys/src/cmd/fossil/check.c - 664 sys sys 1187136398 17470
+1187137803 1 c sys/src/cmd/fossil/pack.c - 664 sys sys 1187136436 4710
+1187148603 0 c 386/bin/fossil/flchk - 775 sys sys 1187147720 237381
+1187148603 1 c 386/bin/fossil/flfmt - 775 sys sys 1187147721 245386
+1187148603 2 c 386/bin/fossil/fossil - 775 sys sys 1187147721 364045

+ 5 - 1
lib/face/48x48x8/.dict

@@ -6,11 +6,14 @@ acsnet/boyd b/boyd.1
 alcatel-lucent.com/plus p/plus.1
 alcatel-lucent.com/plus p/plus.1
 alcatel-lucent.com/unknown a/alu.1
 alcatel-lucent.com/unknown a/alu.1
 alcatel-lucent.fr/unknown a/alu.1
 alcatel-lucent.fr/unknown a/alu.1
+alcatel-lucent.de/unknown a/alu.1
+alcatel-lucent.nl/unknown a/alu.1
 alchar.org/aedil k/kris.1
 alchar.org/aedil k/kris.1
 aprote.ee/t.lankots t/tiit.1
 aprote.ee/t.lankots t/tiit.1
 ar/unknown u/unknown.ar
 ar/unknown u/unknown.ar
 arm.com/unknown a/arm.1
 arm.com/unknown a/arm.1
 astro/boyd b/boyd.1
 astro/boyd b/boyd.1
+astro/paurea p/paurea.1
 at/unknown u/unknown.at
 at/unknown u/unknown.at
 au/unknown u/unknown.au
 au/unknown u/unknown.au
 be/unknown u/unknown.be
 be/unknown u/unknown.be
@@ -47,10 +50,10 @@ flowerbed.dyndns.org/zfolkerts z/zfolkerts.1
 fr/unknown u/unknown.fr
 fr/unknown u/unknown.fr
 france3.fr/boyd b/boyd.1
 france3.fr/boyd b/boyd.1
 gmail.com/andresdju a/andresdju.1
 gmail.com/andresdju a/andresdju.1
-gmail.com/devon.odell d/devon.1
 gmail.com/benavento f/fgb.1
 gmail.com/benavento f/fgb.1
 gmail.com/bruce.ellis b/brucee.1
 gmail.com/bruce.ellis b/brucee.1
 gmail.com/bruce.ellis b/brucee.2
 gmail.com/bruce.ellis b/brucee.2
+gmail.com/devon.odell d/devon.1
 gmail.com/ericvh e/ericvh.2
 gmail.com/ericvh e/ericvh.2
 gmail.com/gabidiaz g/gabidiaz.1
 gmail.com/gabidiaz g/gabidiaz.1
 gmail.com/jmehat j/jmehat.1
 gmail.com/jmehat j/jmehat.1
@@ -78,6 +81,7 @@ is/unknown u/unknown.is
 it.usyd.edu.au/boyd b/boyd.1
 it.usyd.edu.au/boyd b/boyd.1
 it/unknown u/unknown.it
 it/unknown u/unknown.it
 jp/unknown u/unknown.jp
 jp/unknown u/unknown.jp
+kix.es/kix k/kix.1
 kr/unknown u/unknown.kr
 kr/unknown u/unknown.kr
 lanl.gov/lionkov l/lionkov.1
 lanl.gov/lionkov l/lionkov.1
 lsub.org/cespedes c/cespedes.1
 lsub.org/cespedes c/cespedes.1

BIN
lib/face/48x48x8/k/kix.1


+ 8 - 0
sys/man/8/fossilcons

@@ -894,6 +894,14 @@ and
 .B l
 .B l
 mode prefixes
 mode prefixes
 set the append-only, directory, and lock bits.
 set the append-only, directory, and lock bits.
+The
+.I perm
+is formatted as described in the
+.I stat
+command;
+creating files or directories with the
+.BR snapshot (s)
+bit set is not allowed.
 .PP
 .PP
 .I Df
 .I Df
 prints the amount of used disk space in the write buffer.
 prints the amount of used disk space in the write buffer.

+ 168 - 108
sys/src/9/ip/esp.c

@@ -1,6 +1,7 @@
 /*
 /*
  * Encapsulating Security Payload for IPsec for IPv4, rfc1827.
  * Encapsulating Security Payload for IPsec for IPv4, rfc1827.
- * TODO: update to match rfc4303 and thus IPv6.
+ *	currently only implements tunnel mode.
+ * TODO: update to match rfc4303.
  */
  */
 #include	"u.h"
 #include	"u.h"
 #include	"../port/lib.h"
 #include	"../port/lib.h"
@@ -10,28 +11,39 @@
 #include	"../port/error.h"
 #include	"../port/error.h"
 
 
 #include	"ip.h"
 #include	"ip.h"
+#include	"ipv6.h"
 #include	"libsec.h"
 #include	"libsec.h"
 
 
 typedef struct Esphdr Esphdr;
 typedef struct Esphdr Esphdr;
+typedef struct Esp4hdr Esp4hdr;
+typedef struct Esp6hdr Esp6hdr;
 typedef struct Esptail Esptail;
 typedef struct Esptail Esptail;
 typedef struct Userhdr Userhdr;
 typedef struct Userhdr Userhdr;
 typedef struct Esppriv Esppriv;
 typedef struct Esppriv Esppriv;
 typedef struct Espcb Espcb;
 typedef struct Espcb Espcb;
 typedef struct Algorithm Algorithm;
 typedef struct Algorithm Algorithm;
-// typedef struct Esprc4 Esprc4;
-
-#define DPRINT if(0)print
 
 
 enum
 enum
 {
 {
 	IP_ESPPROTO	= 50,	/* IP v4 and v6 protocol number */
 	IP_ESPPROTO	= 50,	/* IP v4 and v6 protocol number */
-	EsphdrSize	= IP4HDR + 8,
+	Esp4hdrlen	= IP4HDR + 8,
+	Esp6hdrlen	= IP6HDR + 8,
 
 
-	EsptailSize	= 2,	/* does not include pad or auth data */
-	UserhdrSize	= 4,	/* user-visible header size - if enabled */
+	Esptaillen	= 2,	/* does not include pad or auth data */
+	Userhdrlen	= 4,	/* user-visible header size - if enabled */
 };
 };
 
 
 struct Esphdr
 struct Esphdr
+{
+	uchar	espspi[4];	/* Security parameter index */
+	uchar	espseq[4];	/* Sequence number */
+};
+
+/*
+ * tunnel-mode layout:		IP | ESP | TCP/UDP | user data.
+ * transport-mode layout is:	ESP | IP | TCP/UDP | user data.
+ */
+struct Esp4hdr
 {
 {
 	/* ipv4 header */
 	/* ipv4 header */
 	uchar	vihl;		/* Version and header length */
 	uchar	vihl;		/* Version and header length */
@@ -45,9 +57,14 @@ struct Esphdr
 	uchar	espsrc[4];	/* Ip source */
 	uchar	espsrc[4];	/* Ip source */
 	uchar	espdst[4];	/* Ip destination */
 	uchar	espdst[4];	/* Ip destination */
 
 
-	/* esp header */
-	uchar	espspi[4];	/* Security parameter index */
-	uchar	espseq[4];	/* Sequence number */
+	Esphdr;
+};
+
+/* tunnel-mode layout */
+struct Esp6hdr
+{
+	Ip6hdr;
+	Esphdr;
 };
 };
 
 
 struct Esptail
 struct Esptail
@@ -98,32 +115,12 @@ struct Algorithm
 	void	(*init)(Espcb*, char* name, uchar *key, int keylen);
 	void	(*init)(Espcb*, char* name, uchar *key, int keylen);
 };
 };
 
 
-
-enum {
-	RC4forward= 10*1024*1024,	/* maximum skip forward */
-	RC4back = 100*1024,	/* maximum look back */
-};
-
-#ifdef notdef
-struct Esprc4
-{
-	ulong	cseq;		/* current byte sequence number */
-	RC4state current;
-
-	int	ovalid;		/* old is valid */
-	ulong	lgseq;		/* last good sequence */
-	ulong	oseq;		/* old byte sequence number */
-	RC4state old;
-};
-#endif
-
 static	Conv* convlookup(Proto *esp, ulong spi);
 static	Conv* convlookup(Proto *esp, ulong spi);
 static	char *setalg(Espcb *ecb, char **f, int n, Algorithm *alg);
 static	char *setalg(Espcb *ecb, char **f, int n, Algorithm *alg);
 static	void espkick(void *x);
 static	void espkick(void *x);
 
 
 static	void nullespinit(Espcb*, char*, uchar *key, int keylen);
 static	void nullespinit(Espcb*, char*, uchar *key, int keylen);
 static	void desespinit(Espcb *ecb, char *name, uchar *k, int n);
 static	void desespinit(Espcb *ecb, char *name, uchar *k, int n);
-// static void rc4espinit(Espcb *ecb, char *name, uchar *k, int n);
 
 
 static	void nullahinit(Espcb*, char*, uchar *key, int keylen);
 static	void nullahinit(Espcb*, char*, uchar *key, int keylen);
 static	void shaahinit(Espcb*, char*, uchar *key, int keylen);
 static	void shaahinit(Espcb*, char*, uchar *key, int keylen);
@@ -231,18 +228,34 @@ espclose(Conv *c)
 	memset(ecb, 0, sizeof(Espcb));
 	memset(ecb, 0, sizeof(Espcb));
 }
 }
 
 
+static int
+ipvers(Conv *c)
+{
+	if((memcmp(c->raddr, v4prefix, IPv4off) == 0 &&
+	    memcmp(c->laddr, v4prefix, IPv4off) == 0) ||
+	    ipcmp(c->raddr, IPnoaddr) == 0)
+		return V4;
+	else
+		return V6;
+}
+
 static void
 static void
 espkick(void *x)
 espkick(void *x)
 {
 {
 	Conv *c = x;
 	Conv *c = x;
-	Esphdr *eh;
+	Esp4hdr *eh4;
+	Esp6hdr *eh6;
 	Esptail *et;
 	Esptail *et;
 	Userhdr *uh;
 	Userhdr *uh;
 	Espcb *ecb;
 	Espcb *ecb;
 	Block *bp;
 	Block *bp;
-	int nexthdr, payload, pad, align;
+	int nexthdr, payload, pad, align, version, hdrlen, iphdrlen;
 	uchar *auth;
 	uchar *auth;
 
 
+	version = ipvers(c);
+	iphdrlen = version == V4? IP4HDR: IP6HDR;
+	hdrlen =   version == V4? Esp4hdrlen: Esp6hdrlen;
+
 	bp = qget(c->wq);
 	bp = qget(c->wq);
 	if(bp == nil)
 	if(bp == nil)
 		return;
 		return;
@@ -252,96 +265,124 @@ espkick(void *x)
 
 
 	if(ecb->header) {
 	if(ecb->header) {
 		/* make sure the message has a User header */
 		/* make sure the message has a User header */
-		bp = pullupblock(bp, UserhdrSize);
+		bp = pullupblock(bp, Userhdrlen);
 		if(bp == nil) {
 		if(bp == nil) {
 			qunlock(c);
 			qunlock(c);
 			return;
 			return;
 		}
 		}
 		uh = (Userhdr*)bp->rp;
 		uh = (Userhdr*)bp->rp;
 		nexthdr = uh->nexthdr;
 		nexthdr = uh->nexthdr;
-		bp->rp += UserhdrSize;
+		bp->rp += Userhdrlen;
 	} else {
 	} else {
 		nexthdr = 0;	/* what should this be? */
 		nexthdr = 0;	/* what should this be? */
 	}
 	}
 
 
 	payload = BLEN(bp) + ecb->espivlen;
 	payload = BLEN(bp) + ecb->espivlen;
 
 
-/* adapt to v6 */
 	/* Make space to fit ip header */
 	/* Make space to fit ip header */
-	bp = padblock(bp, EsphdrSize + ecb->espivlen);
+	bp = padblock(bp, hdrlen + ecb->espivlen);
 
 
 	align = 4;
 	align = 4;
 	if(ecb->espblklen > align)
 	if(ecb->espblklen > align)
 		align = ecb->espblklen;
 		align = ecb->espblklen;
 	if(align % ecb->ahblklen != 0)
 	if(align % ecb->ahblklen != 0)
 		panic("espkick: ahblklen is important after all");
 		panic("espkick: ahblklen is important after all");
-	pad = (align-1) - (payload + EsptailSize-1)%align;
+	pad = (align-1) - (payload + Esptaillen-1)%align;
 
 
 	/*
 	/*
 	 * Make space for tail
 	 * Make space for tail
 	 * this is done by calling padblock with a negative size
 	 * this is done by calling padblock with a negative size
 	 * Padblock does not change bp->wp!
 	 * Padblock does not change bp->wp!
 	 */
 	 */
-	bp = padblock(bp, -(pad+EsptailSize+ecb->ahlen));
-	bp->wp += pad+EsptailSize+ecb->ahlen;
+	bp = padblock(bp, -(pad+Esptaillen+ecb->ahlen));
+	bp->wp += pad+Esptaillen+ecb->ahlen;
 
 
-	eh = (Esphdr *)(bp->rp);
-	et = (Esptail*)(bp->rp + EsphdrSize + payload + pad);
+	eh4 = (Esp4hdr *)bp->rp;
+	eh6 = (Esp6hdr *)bp->rp;
+	et = (Esptail*)(bp->rp + hdrlen + payload + pad);
 
 
 	/* fill in tail */
 	/* fill in tail */
 	et->pad = pad;
 	et->pad = pad;
 	et->nexthdr = nexthdr;
 	et->nexthdr = nexthdr;
 
 
-	ecb->cipher(ecb, bp->rp+EsphdrSize, payload+pad+EsptailSize);
-	auth = bp->rp + EsphdrSize + payload + pad + EsptailSize;
+	ecb->cipher(ecb, bp->rp + hdrlen, payload + pad + Esptaillen);
+	auth = bp->rp + hdrlen + payload + pad + Esptaillen;
 
 
 	/* fill in head */
 	/* fill in head */
-	eh->vihl = IP_VER4;
-	hnputl(eh->espspi, ecb->spi);
-	hnputl(eh->espseq, ++ecb->seq);
-	v6tov4(eh->espsrc, c->laddr);
-	v6tov4(eh->espdst, c->raddr);
-	eh->espproto = IP_ESPPROTO;
-	eh->frag[0] = 0;
-	eh->frag[1] = 0;
-
-	ecb->auth(ecb, bp->rp + IP4HDR, (EsphdrSize - IP4HDR) +
-		payload + pad + EsptailSize, auth);
+	if (version == V4) {
+		eh4->vihl = IP_VER4;
+		hnputl(eh4->espspi, ecb->spi);
+		hnputl(eh4->espseq, ++ecb->seq);
+		v6tov4(eh4->espsrc, c->laddr);
+		v6tov4(eh4->espdst, c->raddr);
+		eh4->espproto = IP_ESPPROTO;
+		eh4->frag[0] = 0;
+		eh4->frag[1] = 0;
+	} else {
+		eh6->vcf[0] = IP_VER6;
+		hnputl(eh6->espspi, ecb->spi);
+		hnputl(eh6->espseq, ++ecb->seq);
+		ipmove(eh6->src, c->laddr);
+		ipmove(eh6->dst, c->raddr);
+		eh6->proto = IP_ESPPROTO;
+	}
+
+	ecb->auth(ecb, bp->rp + iphdrlen, (hdrlen - iphdrlen) +
+		payload + pad + Esptaillen, auth);
 
 
 	qunlock(c);
 	qunlock(c);
 	/* print("esp: pass down: %uld\n", BLEN(bp)); */
 	/* print("esp: pass down: %uld\n", BLEN(bp)); */
-	ipoput4(c->p->f, bp, 0, c->ttl, c->tos, c);
-/* end adapt to v6 */
+	if (version == V4)
+		ipoput4(c->p->f, bp, 0, c->ttl, c->tos, c);
+	else
+		ipoput6(c->p->f, bp, 0, c->ttl, c->tos, c);
 }
 }
 
 
 void
 void
 espiput(Proto *esp, Ipifc*, Block *bp)
 espiput(Proto *esp, Ipifc*, Block *bp)
 {
 {
-	Esphdr *eh;
+	Esp4hdr *eh4;
+	Esp6hdr *eh6;
 	Esptail *et;
 	Esptail *et;
 	Userhdr *uh;
 	Userhdr *uh;
 	Conv *c;
 	Conv *c;
 	Espcb *ecb;
 	Espcb *ecb;
 	uchar raddr[IPaddrlen], laddr[IPaddrlen];
 	uchar raddr[IPaddrlen], laddr[IPaddrlen];
 	Fs *f;
 	Fs *f;
-	uchar *auth;
+	uchar *auth, *espspi;
 	ulong spi;
 	ulong spi;
-	int payload, nexthdr;
+	int payload, nexthdr, version, hdrlen;
 
 
 	f = esp->f;
 	f = esp->f;
+	if (bp == nil || BLEN(bp) == 0) {
+		/* get enough to identify the IP version */
+		bp = pullupblock(bp, IP4HDR);
+		if(bp == nil) {
+			netlog(f, Logesp, "esp: short packet\n");
+			return;
+		}
+	}
+	eh4 = (Esp4hdr*)bp->rp;
+	version = ((eh4->vihl & 0xf0) == IP_VER4? V4: V6);
+	hdrlen = version == V4? Esp4hdrlen: Esp6hdrlen;
 
 
-	bp = pullupblock(bp, EsphdrSize+EsptailSize);
+	bp = pullupblock(bp, hdrlen + Esptaillen);
 	if(bp == nil) {
 	if(bp == nil) {
 		netlog(f, Logesp, "esp: short packet\n");
 		netlog(f, Logesp, "esp: short packet\n");
 		return;
 		return;
 	}
 	}
 
 
-/* adapt to v6 */
-	eh = (Esphdr*)(bp->rp);
-	spi = nhgetl(eh->espspi);
-	v4tov6(raddr, eh->espsrc);
-	v4tov6(laddr, eh->espdst);
-/* end adapt to v6 */
+	if (version == V4) {
+		eh4 = (Esp4hdr*)bp->rp;
+		spi = nhgetl(eh4->espspi);
+		v4tov6(raddr, eh4->espsrc);
+		v4tov6(laddr, eh4->espdst);
+	} else {
+		eh6 = (Esp6hdr*)bp->rp;
+		spi = nhgetl(eh6->espspi);
+		ipmove(raddr, eh6->src);
+		ipmove(laddr, eh6->dst);
+	}
 
 
 	qlock(esp);
 	qlock(esp);
 	/* Look for a conversation structure for this port */
 	/* Look for a conversation structure for this port */
@@ -363,8 +404,7 @@ espiput(Proto *esp, Ipifc*, Block *bp)
 	if(bp->next)
 	if(bp->next)
 		bp = concatblock(bp);
 		bp = concatblock(bp);
 
 
-/* adapt to v6 */
-	if(BLEN(bp) < EsphdrSize + ecb->espivlen + EsptailSize + ecb->ahlen) {
+	if(BLEN(bp) < hdrlen + ecb->espivlen + Esptaillen + ecb->ahlen) {
 		qunlock(c);
 		qunlock(c);
 		netlog(f, Logesp, "esp: short block %I -> %I!%d\n", raddr,
 		netlog(f, Logesp, "esp: short block %I -> %I!%d\n", raddr,
 			laddr, spi);
 			laddr, spi);
@@ -372,9 +412,10 @@ espiput(Proto *esp, Ipifc*, Block *bp)
 		return;
 		return;
 	}
 	}
 
 
-	eh = (Esphdr*)(bp->rp);
 	auth = bp->wp - ecb->ahlen;
 	auth = bp->wp - ecb->ahlen;
-	if(!ecb->auth(ecb, eh->espspi, auth-eh->espspi, auth)) {
+	espspi = version == V4? ((Esp4hdr*)bp->rp)->espspi:
+				((Esp6hdr*)bp->rp)->espspi;
+	if(!ecb->auth(ecb, espspi, auth - espspi, auth)) {
 		qunlock(c);
 		qunlock(c);
 print("esp: bad auth %I -> %I!%ld\n", raddr, laddr, spi);
 print("esp: bad auth %I -> %I!%ld\n", raddr, laddr, spi);
 		netlog(f, Logesp, "esp: bad auth %I -> %I!%d\n", raddr,
 		netlog(f, Logesp, "esp: bad auth %I -> %I!%d\n", raddr,
@@ -383,15 +424,15 @@ print("esp: bad auth %I -> %I!%ld\n", raddr, laddr, spi);
 		return;
 		return;
 	}
 	}
 
 
-	payload = BLEN(bp)-EsphdrSize-ecb->ahlen;
-	if(payload<=0 || payload%4 != 0 || payload%ecb->espblklen!=0) {
+	payload = BLEN(bp) - hdrlen - ecb->ahlen;
+	if(payload <= 0 || payload % 4 != 0 || payload % ecb->espblklen != 0) {
 		qunlock(c);
 		qunlock(c);
 		netlog(f, Logesp, "esp: bad length %I -> %I!%d payload=%d BLEN=%d\n",
 		netlog(f, Logesp, "esp: bad length %I -> %I!%d payload=%d BLEN=%d\n",
 			raddr, laddr, spi, payload, BLEN(bp));
 			raddr, laddr, spi, payload, BLEN(bp));
 		freeb(bp);
 		freeb(bp);
 		return;
 		return;
 	}
 	}
-	if(!ecb->cipher(ecb, bp->rp+EsphdrSize, payload)) {
+	if(!ecb->cipher(ecb, bp->rp + hdrlen, payload)) {
 		qunlock(c);
 		qunlock(c);
 print("esp: cipher failed %I -> %I!%ld: %s\n", raddr, laddr, spi, up->errstr);
 print("esp: cipher failed %I -> %I!%ld: %s\n", raddr, laddr, spi, up->errstr);
 		netlog(f, Logesp, "esp: cipher failed %I -> %I!%d: %s\n", raddr,
 		netlog(f, Logesp, "esp: cipher failed %I -> %I!%d: %s\n", raddr,
@@ -400,8 +441,8 @@ print("esp: cipher failed %I -> %I!%ld: %s\n", raddr, laddr, spi, up->errstr);
 		return;
 		return;
 	}
 	}
 
 
-	payload -= EsptailSize;
-	et = (Esptail*)(bp->rp + EsphdrSize + payload);
+	payload -= Esptaillen;
+	et = (Esptail*)(bp->rp + hdrlen + payload);
 	payload -= et->pad + ecb->espivlen;
 	payload -= et->pad + ecb->espivlen;
 	nexthdr = et->nexthdr;
 	nexthdr = et->nexthdr;
 	if(payload <= 0) {
 	if(payload <= 0) {
@@ -413,16 +454,15 @@ print("esp: cipher failed %I -> %I!%ld: %s\n", raddr, laddr, spi, up->errstr);
 	}
 	}
 
 
 	/* trim packet */
 	/* trim packet */
-	bp->rp += EsphdrSize + ecb->espivlen;
+	bp->rp += hdrlen + ecb->espivlen;
 	bp->wp = bp->rp + payload;
 	bp->wp = bp->rp + payload;
 	if(ecb->header) {
 	if(ecb->header) {
-		/* assume UserhdrSize < EsphdrSize */
-		bp->rp -= UserhdrSize;
+		/* assume Userhdrlen < Esp4hdrlen < Esp6hdrlen */
+		bp->rp -= Userhdrlen;
 		uh = (Userhdr*)bp->rp;
 		uh = (Userhdr*)bp->rp;
-		memset(uh, 0, UserhdrSize);
+		memset(uh, 0, Userhdrlen);
 		uh->nexthdr = nexthdr;
 		uh->nexthdr = nexthdr;
 	}
 	}
-/* end adapt to v6 */
 
 
 	if(qfull(c->rq)){
 	if(qfull(c->rq)){
 		netlog(f, Logesp, "esp: qfull %I -> %I.%uld\n", raddr,
 		netlog(f, Logesp, "esp: qfull %I -> %I.%uld\n", raddr,
@@ -458,11 +498,11 @@ espctl(Conv *c, char **f, int n)
 void
 void
 espadvise(Proto *esp, Block *bp, char *msg)
 espadvise(Proto *esp, Block *bp, char *msg)
 {
 {
-	Esphdr *h;
+	Esp4hdr *h;
 	Conv *c;
 	Conv *c;
 	ulong spi;
 	ulong spi;
 
 
-	h = (Esphdr*)(bp->rp);
+	h = (Esp4hdr*)(bp->rp);
 
 
 	spi = nhgets(h->espspi);
 	spi = nhgets(h->espspi);
 	qlock(esp);
 	qlock(esp);
@@ -762,7 +802,53 @@ desespinit(Espcb *ecb, char *name, uchar *k, int n)
 	setupDESstate(ecb->espstate, key, ivec);
 	setupDESstate(ecb->espstate, key, ivec);
 }
 }
 
 
+void
+espinit(Fs *fs)
+{
+	Proto *esp;
+
+	esp = smalloc(sizeof(Proto));
+	esp->priv = smalloc(sizeof(Esppriv));
+	esp->name = "esp";
+	esp->connect = espconnect;
+	esp->announce = nil;
+	esp->ctl = espctl;
+	esp->state = espstate;
+	esp->create = espcreate;
+	esp->close = espclose;
+	esp->rcv = espiput;
+	esp->advise = espadvise;
+	esp->stats = espstats;
+	esp->local = esplocal;
+	esp->remote = espremote;
+	esp->ipproto = IP_ESPPROTO;
+	esp->nc = Nchans;
+	esp->ptclsize = sizeof(Espcb);
+
+	Fsproto(fs, esp);
+}
+
+
 #ifdef notdef
 #ifdef notdef
+enum {
+	RC4forward= 10*1024*1024,	/* maximum skip forward */
+	RC4back = 100*1024,	/* maximum look back */
+};
+
+typedef struct Esprc4 Esprc4;
+struct Esprc4
+{
+	ulong	cseq;		/* current byte sequence number */
+	RC4state current;
+
+	int	ovalid;		/* old is valid */
+	ulong	lgseq;		/* last good sequence */
+	ulong	oseq;		/* old byte sequence number */
+	RC4state old;
+};
+
+static void rc4espinit(Espcb *ecb, char *name, uchar *k, int n);
+
 static int
 static int
 rc4cipher(Espcb *ecb, uchar *p, int n)
 rc4cipher(Espcb *ecb, uchar *p, int n)
 {
 {
@@ -852,29 +938,3 @@ rc4espinit(Espcb *ecb, char *name, uchar *k, int n)
 	ecb->espstate = esprc4;
 	ecb->espstate = esprc4;
 }
 }
 #endif
 #endif
-
-void
-espinit(Fs *fs)
-{
-	Proto *esp;
-
-	esp = smalloc(sizeof(Proto));
-	esp->priv = smalloc(sizeof(Esppriv));
-	esp->name = "esp";
-	esp->connect = espconnect;
-	esp->announce = nil;
-	esp->ctl = espctl;
-	esp->state = espstate;
-	esp->create = espcreate;
-	esp->close = espclose;
-	esp->rcv = espiput;
-	esp->advise = espadvise;
-	esp->stats = espstats;
-	esp->local = esplocal;
-	esp->remote = espremote;
-	esp->ipproto = IP_ESPPROTO;
-	esp->nc = Nchans;
-	esp->ptclsize = sizeof(Espcb);
-
-	Fsproto(fs, esp);
-}

+ 9 - 8
sys/src/cmd/fossil/check.c

@@ -115,7 +115,7 @@ checkEpoch(Fsck *chk, u32int epoch)
 
 
 	for(a=0; a<chk->nblocks; a++){
 	for(a=0; a<chk->nblocks; a++){
 		if(!readLabel(chk->cache, &l, (a+chk->hint)%chk->nblocks)){
 		if(!readLabel(chk->cache, &l, (a+chk->hint)%chk->nblocks)){
-			error(chk, "could not read label for addr %.8#ux", a);
+			error(chk, "could not read label for addr 0x%.8#ux", a);
 			continue;
 			continue;
 		}
 		}
 		if(l.tag == RootTag && l.epoch == epoch)
 		if(l.tag == RootTag && l.epoch == epoch)
@@ -130,7 +130,7 @@ checkEpoch(Fsck *chk, u32int epoch)
 	a = (a+chk->hint)%chk->nblocks;
 	a = (a+chk->hint)%chk->nblocks;
 	b = cacheLocalData(chk->cache, a, BtDir, RootTag, OReadOnly, 0);
 	b = cacheLocalData(chk->cache, a, BtDir, RootTag, OReadOnly, 0);
 	if(b == nil){
 	if(b == nil){
-		error(chk, "could not read root block %.8#ux: %R", a);
+		error(chk, "could not read root block 0x%.8#ux: %R", a);
 		return;
 		return;
 	}
 	}
 
 
@@ -145,7 +145,7 @@ checkEpoch(Fsck *chk, u32int epoch)
 	 * just a convenience to help the search.
 	 * just a convenience to help the search.
 	 */
 	 */
 	if(!entryUnpack(&e, b->data, 0)){
 	if(!entryUnpack(&e, b->data, 0)){
-		error(chk, "could not unpack root block %.8#ux: %R", a);
+		error(chk, "could not unpack root block 0x%.8#ux: %R", a);
 		blockPut(b);
 		blockPut(b);
 		return;
 		return;
 	}
 	}
@@ -359,7 +359,7 @@ checkLeak(Fsck *chk)
 
 
 	for(a = 0; a < chk->nblocks; a++){
 	for(a = 0; a < chk->nblocks; a++){
 		if(!readLabel(chk->cache, &l, a)){
 		if(!readLabel(chk->cache, &l, a)){
-			error(chk, "could not read label: addr %ux %d %d: %R",
+			error(chk, "could not read label: addr 0x%ux %d %d: %R",
 				a, l.type, l.state);
 				a, l.type, l.state);
 			continue;
 			continue;
 		}
 		}
@@ -374,11 +374,12 @@ checkLeak(Fsck *chk)
 		if(l.state&BsClosed)
 		if(l.state&BsClosed)
 			continue;
 			continue;
 		nlost++;
 		nlost++;
-		// warn(chk, "unreachable block: addr %ux type %d tag %ux state %s epoch %ud close %ud",
-		// 	a, l.type, l.tag, bsStr(l.state), l.epoch, l.epochClose);
+//		warn(chk, "unreachable block: addr 0x%ux type %d tag 0x%ux "
+//			"state %s epoch %ud close %ud", a, l.type, l.tag,
+//			bsStr(l.state), l.epoch, l.epochClose);
 		b = cacheLocal(chk->cache, PartData, a, OReadOnly);
 		b = cacheLocal(chk->cache, PartData, a, OReadOnly);
 		if(b == nil){
 		if(b == nil){
-			error(chk, "could not read block %#.8ux", a);
+			error(chk, "could not read block 0x%#.8ux", a);
 			continue;
 			continue;
 		}
 		}
 		chk->close(chk, b, 0);
 		chk->close(chk, b, 0);
@@ -388,7 +389,7 @@ checkLeak(Fsck *chk)
 	}
 	}
 	chk->print("fsys blocks: total=%ud used=%ud(%.1f%%) free=%ud(%.1f%%) lost=%ud(%.1f%%)\n",
 	chk->print("fsys blocks: total=%ud used=%ud(%.1f%%) free=%ud(%.1f%%) lost=%ud(%.1f%%)\n",
 		chk->nblocks,
 		chk->nblocks,
-		chk->nblocks-nfree-nlost,
+		chk->nblocks - nfree-nlost,
 		100.*(chk->nblocks - nfree - nlost)/chk->nblocks,
 		100.*(chk->nblocks - nfree - nlost)/chk->nblocks,
 		nfree, 100.*nfree/chk->nblocks,
 		nfree, 100.*nfree/chk->nblocks,
 		nlost, 100.*nlost/chk->nblocks);
 		nlost, 100.*nlost/chk->nblocks);

+ 5 - 6
sys/src/cmd/fossil/pack.c

@@ -73,16 +73,15 @@ labelUnpack(Label *l, uchar *p, int i)
 	l->tag = U32GET(p+10);
 	l->tag = U32GET(p+10);
 
 
 	if(l->type > BtMax){
 	if(l->type > BtMax){
-	Bad:
+Bad:
 		vtSetError(EBadLabel);
 		vtSetError(EBadLabel);
-fprint(2, "labelUnpack %.2ux %.2ux %.8ux %.8ux %.8ux\n",
-	l->state, l->type, l->epoch, l->epochClose, l->tag);
+		fprint(2, "%s: labelUnpack: bad label: 0x%.2ux 0x%.2ux 0x%.8ux "
+			"0x%.8ux 0x%.8ux\n", argv0, l->state, l->type, l->epoch,
+			l->epochClose, l->tag);
 		return 0;
 		return 0;
 	}
 	}
 	if(l->state != BsBad && l->state != BsFree){
 	if(l->state != BsBad && l->state != BsFree){
-		if(!(l->state&BsAlloc))
-			goto Bad;
-		if(l->state&~BsMask)
+		if(!(l->state&BsAlloc) || l->state & ~BsMask)
 			goto Bad;
 			goto Bad;
 		if(l->state&BsClosed){
 		if(l->state&BsClosed){
 			if(l->epochClose == ~(u32int)0)
 			if(l->epochClose == ~(u32int)0)

+ 17 - 10
sys/src/cmd/fossil/source.c

@@ -38,30 +38,36 @@ sourceAlloc(Fs *fs, Block *b, Source *p, u32int offset, int mode, int issnapshot
 	 * get prints.
 	 * get prints.
 	 */
 	 */
 	if(!entryUnpack(&e, b->data, offset % epb)){
 	if(!entryUnpack(&e, b->data, offset % epb)){
-		fprint(2, "entryUnpack failed\n");
+		fprint(2, "%s: %V: sourceAlloc: entryUnpack failed\n", argv0,
+			b->score);
 		goto Bad;
 		goto Bad;
 	}
 	}
 	if(!(e.flags & VtEntryActive)){
 	if(!(e.flags & VtEntryActive)){
-		if(0)fprint(2, "not active\n");
+		if(0) fprint(2, "%s: %V: sourceAlloc: not active\n",
+			argv0, e.score);
 		goto Bad;
 		goto Bad;
 	}
 	}
 	if(e.psize < 256 || e.dsize < 256){
 	if(e.psize < 256 || e.dsize < 256){
-		fprint(2, "psize %ud dsize %ud\n", e.psize, e.dsize);
+		fprint(2, "%s: %V: sourceAlloc: psize %ud dsize %ud\n",
+			argv0, e.score, e.psize, e.dsize);
 		goto Bad;
 		goto Bad;
 	}
 	}
 
 
 	if(e.depth < sizeToDepth(e.size, e.psize, e.dsize)){
 	if(e.depth < sizeToDepth(e.size, e.psize, e.dsize)){
-		fprint(2, "depth %ud size %llud psize %ud dsize %ud\n", e.depth, e.size, e.psize, e.dsize);
+		fprint(2, "%s: %V: sourceAlloc: depth %ud size %llud psize %ud dsize %ud\n",
+			argv0, e.score, e.depth, e.size, e.psize, e.dsize);
 		goto Bad;
 		goto Bad;
 	}
 	}
 
 
 	if((e.flags & VtEntryLocal) && e.tag == 0){
 	if((e.flags & VtEntryLocal) && e.tag == 0){
-		fprint(2, "flags %#ux tag %#ux\n", e.flags, e.tag);
+		fprint(2, "%s: %V: sourceAlloc: flags %#ux tag %#ux\n",
+			argv0, e.score, e.flags, e.tag);
 		goto Bad;
 		goto Bad;
 	}
 	}
 
 
 	if(e.dsize > fs->blockSize || e.psize > fs->blockSize){
 	if(e.dsize > fs->blockSize || e.psize > fs->blockSize){
-		fprint(2, "psize %ud dsize %ud blocksize %ud\n", e.psize, e.dsize, fs->blockSize);
+		fprint(2, "%s: %V: sourceAlloc: psize %ud dsize %ud blocksize %ud\n",
+			argv0, e.score, e.psize, e.dsize, fs->blockSize);
 		goto Bad;
 		goto Bad;
 	}
 	}
 
 
@@ -98,20 +104,20 @@ sourceAlloc(Fs *fs, Block *b, Source *p, u32int offset, int mode, int issnapshot
 		vtUnlock(p->lk);
 		vtUnlock(p->lk);
 	}
 	}
 	r->epoch = epoch;
 	r->epoch = epoch;
-//fprint(2, "sourceAlloc have %V be.%d fse.%d %s\n", b->score, b->l.epoch, r->fs->ehi, mode==OReadWrite ? "rw" : "ro");
+//	fprint(2, "%s: sourceAlloc: have %V be.%d fse.%d %s\n", argv0, b->score,
+//		b->l.epoch, r->fs->ehi, mode == OReadWrite? "rw": "ro");
 	memmove(r->score, b->score, VtScoreSize);
 	memmove(r->score, b->score, VtScoreSize);
 	r->scoreEpoch = b->l.epoch;
 	r->scoreEpoch = b->l.epoch;
 	r->offset = offset;
 	r->offset = offset;
 	r->epb = epb;
 	r->epb = epb;
 	r->tag = b->l.tag;
 	r->tag = b->l.tag;
 
 
-//fprint(2, "sourceAlloc: %p -> %V %d\n", r, r->score, r->offset);
+//	fprint(2, "%s: sourceAlloc: %p -> %V %d\n", r, r->score, r->offset);
 
 
 	return r;
 	return r;
 Bad:
 Bad:
 	vtSetError(EBadEntry);
 	vtSetError(EBadEntry);
 	return nil;
 	return nil;
-
 }
 }
 
 
 Source *
 Source *
@@ -125,7 +131,8 @@ sourceRoot(Fs *fs, u32int addr, int mode)
 		return nil;
 		return nil;
 
 
 	if(mode == OReadWrite && b->l.epoch != fs->ehi){
 	if(mode == OReadWrite && b->l.epoch != fs->ehi){
-		fprint(2, "sourceRoot: fs->ehi = %ud, b->l = %L\n", fs->ehi, &b->l);
+		fprint(2, "%s: sourceRoot: fs->ehi = %ud, b->l = %L\n",
+			argv0, fs->ehi, &b->l);
 		blockPut(b);
 		blockPut(b);
 		vtSetError(EBadRoot);
 		vtSetError(EBadRoot);
 		return nil;
 		return nil;