Author: wmb Date: 2009-12-15 23:33:07 +0100 (Tue, 15 Dec 2009) New Revision: 1615
Modified: ofw/inet/ippkg.fth ofw/inet/netload.fth ofw/inet/tcp.fth Log: TCP - changed local port number assignment to use the IANA recommended range. Also added a local port number assignment method for UDP.
Modified: ofw/inet/ippkg.fth =================================================================== --- ofw/inet/ippkg.fth 2009-12-15 22:28:30 UTC (rev 1614) +++ ofw/inet/ippkg.fth 2009-12-15 22:33:07 UTC (rev 1615) @@ -62,6 +62,7 @@ call-tftp: oc-checksum ( n adr len -- n' ) call-tftp: link-mtu ( -- n ) call-tftp: max-ip-payload ( -- n ) +call-tftp: alloc-udp-port ( -- port# )
finish-device device-end
Modified: ofw/inet/netload.fth =================================================================== --- ofw/inet/netload.fth 2009-12-15 22:28:30 UTC (rev 1614) +++ ofw/inet/netload.fth 2009-12-15 22:33:07 UTC (rev 1615) @@ -374,7 +374,24 @@ use-nfs? if nfs-read else tftpread then ;
+h# c123 value next-udp-local-port +true value first-time? +: ?init-udp-local-port ( -- ) + first-time? if +[ifdef] random-long + random-long h# 3fff and h# c000 + to next-udp-local-port +[then] + false to first-time? + then +; + headers +: alloc-udp-port ( -- port ) + next-udp-local-port 1+ ( port ) + \ Stay within the IANA-recommended dynamic port range + dup h# 10000 = if drop h# c000 then ( port' ) + dup to next-udp-local-port ( port ) +; : next-xid ( -- id ) rpc-xid 1+ dup to rpc-xid ; : allocate-packet ( len -- adr ) allocate-udp ; : free-packet ( len -- adr ) free-udp ; @@ -477,6 +494,7 @@ configure s-all my-self to obp-tftp-ih \ Publish so IP redirector can attach to us + ?init-udp-local-port true ;
Modified: ofw/inet/tcp.fth =================================================================== --- ofw/inet/tcp.fth 2009-12-15 22:28:30 UTC (rev 1614) +++ ofw/inet/tcp.fth 2009-12-15 22:33:07 UTC (rev 1615) @@ -231,12 +231,13 @@ then ;
-h# 555 value next-tcp-local-port +h# c999 value next-tcp-local-port
-: alloc-next-tcp-local-port ( -- port ) - next-tcp-local-port 1+ ( port ) - h# ffff and h# 555 max ( port ) - dup to next-tcp-local-port ( port ) +: alloc-tcp-port ( -- port ) + next-tcp-local-port 1+ ( port ) + \ Stay within the IANA-recommended dynamic port range + dup h# 10000 = if drop h# c000 then ( port' ) + dup to next-tcp-local-port ( port ) ;
\ send sequence variables @@ -2342,7 +2343,7 @@ first-time? if false to first-time? [ifdef] random-long - random-long h# f000 mod h# 555 + to next-tcp-local-port + random-long h# 3fff and h# c000 + to next-tcp-local-port [then]
" next-xid" $call-parent to tcp_iss @@ -2355,7 +2356,7 @@
['] protocol-tick d# 500 alarm
- alloc-next-tcp-local-port to my-tcp-port + alloc-tcp-port to my-tcp-port true to alive?
true
openfirmware@openfirmware.info