1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-19 10:53:58 +00:00
freebsd/sys/net
Alexander V. Chernikov 3deb3649d5 Fix incorrect netmasks being passed via rtsock.
Since radix has been ignoring sa_family in passed sockaddrs,
no one ever has bothered filling valid sa_family in netmasks.
Additionally, radix adjusts sa_len field in every netmask not to
compare zero bytes at all.

This leads us to rt_mask with sa_family of AF_UNSPEC (-1) and
arbitrary sa_len field (0 for default route, for example).

However, rtsock have been passing that rt_mask intact for ages,
requiring all rtsock consumers to make ther own local hacks.
We even have unfixed on in base:

do `route -n monitor` in one window and issue `route -n get addr`
for some directly-connected address. You will probably see the following:

got message of size 304 on Thu May  8 15:06:06 2014
RTM_GET: Report Metrics: len 304, pid: 30493, seq 1, errno 0, flags:<UP,DONE,PINNED>
locks:  inits:
sockaddrs: <DST,GATEWAY,NETMASK,IFP,IFA>
 10.0.0.0 link#1 (255) ffff ffff ff em0:8.0.27.c5.29.d4 10.0.0.92
_________________^^^^^^^^^^^^^^^^^^

after the change:

got message of size 312 on Thu May  8 15:44:07 2014
RTM_GET: Report Metrics: len 312, pid: 2895, seq 1, errno 0, flags:<UP,DONE,PINNED>
locks:  inits:
sockaddrs: <DST,GATEWAY,NETMASK,IFP,IFA>
 10.0.0.0 link#1 255.255.255.0 em0:8.0.27.c5.29.d4 10.0.0.92
_________________^^^^^^^^^^^^^^^^^^

Sponsored by:	Yandex LLC
MFC after:	1 month
2014-05-08 11:56:06 +00:00
..
bpf_buffer.c
bpf_buffer.h
bpf_filter.c Include strings.h so that bpf_filter.c can be built in userland. 2014-03-19 13:10:25 +00:00
bpf_jitter.c
bpf_jitter.h
bpf_zerocopy.c
bpf_zerocopy.h
bpf.c Convert the random entropy harvesting code to use a const void * pointer 2013-11-01 20:53:49 +00:00
bpf.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
bpfdesc.h
bridgestp.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
bridgestp.h
ethernet.h
fddi.h
firewire.h
flowtable.c Pacify gcc. 2014-03-05 02:35:15 +00:00
flowtable.h Add my copyright to flowtable. 2014-02-17 12:07:17 +00:00
ieee8023ad_lacp.c Fix a panic caused by doing "ifconfig -am" while a lagg is being destroyed. 2014-05-02 16:24:09 +00:00
ieee8023ad_lacp.h
ieee_oui.h Clean up the macros to avoid using casts. 2013-11-15 16:03:32 +00:00
if_arc.h
if_arcsubr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_arp.h
if_atm.h
if_atmsubr.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_bridge.c Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
if_bridgevar.h
if_clone.c Include necessary headers that now are available due to pollution 2013-10-28 07:29:16 +00:00
if_clone.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
if_dead.c
if_debug.c
if_disc.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_dl.h Simplify filling sockaddr_dl structure for if_resolvemulti() 2014-01-18 23:24:51 +00:00
if_edsc.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_enc.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_enc.h
if_epair.c Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
if_ethersubr.c Several years after initial development, merge prototype support for 2014-03-15 00:57:50 +00:00
if_faith.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_fddisubr.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_fwsubr.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_gif.c ANSIfy function defintions. 2013-11-15 12:12:50 +00:00
if_gif.h
if_gre.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_gre.h
if_iso88025subr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_lagg.c Fix build for non-INET that was broken by r264469. 2014-04-15 13:28:54 +00:00
if_lagg.h Multi-queue NIC drivers and multi-port lagg tend to use the same lower 2013-12-30 01:32:17 +00:00
if_llatbl.c
if_llatbl.h
if_llc.h
if_loop.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_media.c
if_media.h Provide forward declaration for struct ifnet. Consumers 2013-10-27 17:27:06 +00:00
if_mib.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
if_mib.h
if_pflog.h
if_pfsync.h Remove more constants related to static sysctl nodes. The MAXID constants 2014-02-25 18:44:33 +00:00
if_sppp.h
if_spppfr.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_spppsubr.c Remove IPX support. 2014-03-14 02:58:48 +00:00
if_stf.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
if_stf.h
if_tap.c Teach every SIOCGIFSTATUS provider to fill in ifs->ascii anyway. 2014-01-07 15:59:33 +00:00
if_tap.h
if_tapvar.h
if_tun.c Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
if_tun.h
if_types.h Remove IPX support. 2014-03-14 02:58:48 +00:00
if_var.h Fix subnet and default routes on different FIBs on the same subnet. 2014-04-24 23:56:56 +00:00
if_vlan_var.h Style: s/SYS_EVENTHANDLER_H/_SYS_EVENTHANDLER_H_/g 2013-10-28 20:32:05 +00:00
if_vlan.c Vlan did not set the value of if_hw_tsomax, so when vlan 2014-04-15 21:48:35 +00:00
if.c Unify sa_equal() macro usage. 2014-04-26 14:52:03 +00:00
if.h Since 32-bit if_baudrate isn't enough to describe a baud rate of a 10 Gbit 2014-03-13 03:42:24 +00:00
ifq.h Move all interface queue related structures, macros and definitions 2013-10-29 17:48:08 +00:00
iso88025.h Garbage collect long time obsoleted (or never used) stuff from routing API. 2014-03-15 06:49:32 +00:00
netisr_internal.h
netisr.c Fix macro name in comment. 2013-11-26 15:23:56 +00:00
netisr.h Remove AppleTalk support. 2014-03-14 06:29:43 +00:00
netmap_user.h This new version of netmap brings you the following: 2014-02-15 04:53:04 +00:00
netmap.h This new version of netmap brings you the following: 2014-02-15 04:53:04 +00:00
pfil.c The r48589 promised to remove implicit inclusion of if_var.h soon. Prepare 2013-10-26 17:58:36 +00:00
pfil.h
pfkeyv2.h
pfvar.h Backport from projects/pf r263908: 2014-04-20 09:17:48 +00:00
ppp_defs.h
radix_mpath.c - Remove rt_metrics_lite and simply put its members into rtentry. 2014-03-05 01:17:47 +00:00
radix_mpath.h
radix.c Fix rnh_walktree_from() function (patch from kern/174959). 2014-05-01 15:04:32 +00:00
radix.h Revert previous commit (262727) and bounce patch back to the 2014-03-04 23:55:04 +00:00
raw_cb.c vnet.h needs to be included before raw_cb.h. Now it compiles due to 2013-10-25 19:49:03 +00:00
raw_cb.h
raw_usrreq.c vnet.h needs to be included before raw_cb.h. Now it compiles due to 2013-10-25 19:49:03 +00:00
route.c Remove additional fib checks from rtalloc1_fib. 2014-05-03 16:38:05 +00:00
route.h Pass radix head ptr along with rte to rtexpunge(). 2014-05-03 16:28:54 +00:00
rtsock.c Fix incorrect netmasks being passed via rtsock. 2014-05-08 11:56:06 +00:00
sff8472.h Convert #defines to enums so that the values are visible in the debugger. 2014-01-02 21:30:59 +00:00
slcompress.c
slcompress.h
vnet.c Remove identical vnet sysctl handlers, and handle CTLFLAG_VNET 2014-02-07 13:47:33 +00:00
vnet.h Fixup for r261590 (vnet sysctl handlers cleanup). 2014-02-09 08:13:17 +00:00
zlib.c
zlib.h
zutil.h