Commit graph

7080 commits

Author SHA1 Message Date
cinap_lenrek 4885c75526 devip: ignore icmp advise about laggard fragments
icmp has to advise protocols about the first
fragment only. all other fragments should be
ignored.
2019-03-07 01:25:11 +01:00
qwx 88e054ffdf vgadb: add t43p 1600x1200 panel entry 2019-03-04 21:38:50 +01:00
qwx b7525d1ed8 igfx: add support for 915gm
tested on a t43 with igfx and a 1600x1200 t43p screen
what works: lvds, blanking
what doesn't: hwgc (not visible), snarfing edid
untested: vga

based on realemu traces.
2019-03-04 21:37:52 +01:00
cinap_lenrek 14da3b8a1f ip/tinc: honor TcpOnly and IndirectData settings, script support, prefer incoming udp connections
only try listen/dial on udp when IndirectData/TcpOnly is not
enabled.

add support for scipts:
 host-up
 host-down
 tinc-up
 tinc-down
 subnet-up
 subnet-down

when dialing udp connection, only switch when there is no
other udp connection active. when we receive an authenticated
message, we switch to that connection immidiately.
2019-03-04 20:29:33 +01:00
cinap_lenrek 57284d07ca devip: ignore reserved fragment offset bits 2019-03-04 12:07:40 +01:00
cinap_lenrek e2d310e623 devip: handle packet too big advise for icmp6, remove fragment header 2019-03-04 03:13:29 +01:00
cinap_lenrek 2af6b08960 devip: use common code in icmp for handling advise 2019-03-04 03:09:39 +01:00
cinap_lenrek 827020f686 devip: zero fragment offset after reassembly, remove tos magic, cleanup 2019-03-04 03:08:27 +01:00
cinap_lenrek a1fceabd5b devip: fix fragment forwarding
unfraglen() had the side effect that it would always copy the
nexthdr field from the fragment header to the previous nexthdr
field. this is fine when we reassemble packets but breaks
fragments that we want to just forward unchanged.
2019-03-04 03:05:30 +01:00
cinap_lenrek fa97c3dd10 devip: simplify ip reassembly functions, getting rid of Ipfrag.hlen
given that we now keep the block size consistent with the
ip packet size, the variable header part of the ip packet
is just: BLEN(bp) - fp->flen == fp->hlen.

fix bug in ip6reassemble() in the non-fragmented case:
reload ih after ip header was moved before writing ih->ploadlen.

use concatbloc() instead of pullupblock().
2019-03-03 18:56:18 +01:00
cinap_lenrek a859f05837 devip: fix block list handling for icmp/icmp6, use proper MinAdvise for icmp6 2019-03-03 09:01:23 +01:00
cinap_lenrek a2c0e55e68 qio: handle common case in trimblock() 2019-03-03 05:26:09 +01:00
cinap_lenrek 5b972a9aea devip: fix ip fragmentation handling issues with header options
some protocols assume that Ip4hdr.length[] and Ip6hdr.ploadlen[]
are valid and not out of range within the block but this has
not been verified. also, the ipv4 and ipv6 headers can have variable
length options, which was not considered in the fragmentation and
reassembly code.

to make this sane, ipiput4() and ipiput6() now verify that everything
is in range and trims to block to the expected size before it does
any further processing. now blocklen() and Ip4hdr.length[] are conistent.

ipoput4() and ipoput6() are simpler now, as they can rely on
blocklen() only, not having a special routing case.

ip fragmentation reassembly has to consider that fragments could
arrive with different ip header options, so we store the header+option
size in new Ipfrag.hlen field.

unfraglen() has to make sure not to run past the buffer, and hadle
the case when it encounters multiple fragment headers.
2019-03-03 05:25:00 +01:00
cinap_lenrek 0aac600fb3 lib9p: fix zero msize abort() due to unknown version (thanks kivik)
kivik wrote:

I've found a nasty bug in lib9p handling of Tversion
messages, where an invalid version string in the request
leads to servers abort()ing the spaceship.

To reproduce:
	; ramfs -S ram
	; aux/9pcon /srv/ram
	Tversion ~0 DIE

The issue lies in sversion() where in case an invalid
version string is received we respond right away with
ofcall.version="unknown"; however, we fail to set the
ofcall.msize, which at this point is cleared to 0.  This
causes the convS2M call in respond() to fail and abort being
called.
2019-03-01 01:43:55 +01:00
cinap_lenrek 967b1248f8 libip: move optimized 386 assembly version of ptclbsum() from kernel to libip 2019-02-27 18:29:08 +01:00
cinap_lenrek 88ccea37f6 kernel: remove ptclbsum dependencies from configs 2019-02-27 08:47:17 +01:00
cinap_lenrek 242403d9f9 pi, pi2: remove ptclbsum dependency from config 2019-02-27 08:38:19 +01:00
cinap_lenrek b76a78c1a1 cwfs: fix %.*s format in cmd_printconf() 2019-02-25 04:36:37 +01:00
cinap_lenrek 66ab4ac223 pc, pc64: fix %.*s format in multibootargs 2019-02-25 04:25:36 +01:00
cinap_lenrek 96d6f44335 wifi: fix %.*s format in wifictl 2019-02-25 04:22:03 +01:00
cinap_lenrek 4de506404b abaco: fix %.*s format in findctype() 2019-02-25 04:20:43 +01:00
cinap_lenrek 980d64826e atazz: fix %.*s format in special command processing 2019-02-25 04:20:00 +01:00
cinap_lenrek b4b4d2286b aux/depend: fix %.*s format in path concatenation 2019-02-25 04:18:30 +01:00
cinap_lenrek bc5b85c37c aux/statusmsg: fix %.*s format 2019-02-25 04:17:19 +01:00
cinap_lenrek 28bcea12aa aux/wpa: fix %.*s format in debug prints 2019-02-25 04:16:48 +01:00
cinap_lenrek 5d58b9573c cc: fix %.*s format usage in lexer "token too long" error 2019-02-25 04:15:43 +01:00
cinap_lenrek ac3e3c342f hgfs: fix %.*s usage in walk 2019-02-25 04:08:13 +01:00
cinap_lenrek a7ab815839 ip/cifsd: fix %.*s format xdirflush() path 2019-02-25 03:53:09 +01:00
cinap_lenrek 80b1890093 ip/ppp: fix %.*s format in debug print 2019-02-25 03:52:05 +01:00
cinap_lenrek cb8ef42b55 ip/pppoe: fix %.*s format in debug prints 2019-02-25 03:51:19 +01:00
cinap_lenrek b01b637889 ip/socksd: fix %.*s format in dialstring 2019-02-25 03:50:14 +01:00
cinap_lenrek 80a1d1ab93 ip/tftpd: fix %.*s format for homedir path 2019-02-25 03:49:17 +01:00
cinap_lenrek 1335a57865 ip/torrent: fix %.*s format in dialstring 2019-02-25 03:48:12 +01:00
cinap_lenrek bcaf95bb5a libpanel: fix %.*s format in pl_snarfentry() 2019-02-25 03:45:49 +01:00
cinap_lenrek a37402be19 nusb/audio: fix %.*s format usage 2019-02-25 03:41:10 +01:00
cinap_lenrek 5ec91a6413 upas/fs: fix %.*s format usage 2019-02-25 03:39:31 +01:00
cinap_lenrek 2e5cd278d7 upas/ned: fix %.*s format in parsesearch(), improve mkfile 2019-02-25 03:34:25 +01:00
cinap_lenrek 536805bce3 upas/scanmail: fix %.*s format in xprint(), improve mkfile 2019-02-25 03:31:50 +01:00
cinap_lenrek e3aee39a38 upas/smtp: fix %.*s format for challenge in smtpcram()
the challenge should already be in ASCII format,
but better safe than sorry.
2019-02-25 03:29:19 +01:00
cinap_lenrek 3043052e24 vt: fix %.*s in sendncars() 2019-02-25 03:25:36 +01:00
cinap_lenrek e1dcd2beb4 webfs: properly handle %.*s in url path and debug prints 2019-02-25 03:21:09 +01:00
cinap_lenrek 05227960c6 ssh: don't assume error messages are ASCII. format number of complete runes, not bytes. 2019-02-25 01:19:44 +01:00
cinap_lenrek cce5422e79 ip/tinc: fix mistake from previous commit 2019-02-15 02:16:31 +01:00
cinap_lenrek dc6772fccc libip: prefer v4 over v6 for myipaddr()
myipaddr() is used in legacy applications that assume a
single ip address per host. so prefer to retun a v4
address over a v6 one.
2019-02-13 18:56:21 +01:00
cinap_lenrek 06912e53e4 devip: remove unused eipconvtet.c and ptclbsum.c files 2019-02-13 17:42:20 +01:00
cinap_lenrek 57ed5cc3f0 devip: ipv6 loopback ::1 has link-local scope 2019-02-13 08:46:49 +01:00
cinap_lenrek cf5095143f merge 2019-02-13 04:47:29 +01:00
cinap_lenrek c0176a5051 ip/ipconfig: format ipmask with %M instead of %I 2019-02-13 04:45:41 +01:00
BurnZeZ ffdbfdf991 postscript: use PI 2019-02-13 03:24:31 +00:00
cinap_lenrek 0ed8f6ff5f libip: don't reject ipmask in v6 form for v4 address 2019-02-13 04:04:33 +01:00