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) |