This is an old revision of the document!


Historically in BSD the raw sockets were not truly raw. The following conventions held:

* packet is modified - packets' ip_len and ip_off are converted to host byte order - packets' ip_len is reduced by the actual size of IP header

Starting with 10.0-RELEASE convention is:

* packet is modified - packets' ip_len and ip_off are converted to host byte order

We are targeting at 11.0-RELEASE to pass unmodified packets on SOCK_RAW sockets.

Expected __FreeBSD_version is 1100012.

Preliminary patch is here: http://people.freebsd.org/~glebius/raw_is_raw.diff

The minimal set of software in ports that we must adopt by the time patch hits the tree:

port name status
src/contrib/traceroute usr.sbin/traceroute/Makefile patch for setting BYTESWAP_IP_HDR
net/quagga & net/quagga-re quagga patch and quagga-re patch (ospf tested on quagga-re)
net/zebra zebra patch (ospf tested)
libnet/libdnet
security/ipsec-tools
openvpn
racoon2
relayd
net/isc-dhcp*-server|relay isc-dhcp43-relay-4.3.0 and isc-dhcp43-server-4.3.0 not impacted (tested)
bird ospf seems impacted: “Socket error on em0: Invalid argument”, perhaps sysdep/bsd/sysio.h needs to be patched
net-snmp
dnsmasq
fping not impacted (tested)
  • sock_raw.1399110202.txt.gz
  • Last modified: 2014/05/03 09:43
  • by OlivierCochardLabbé