Julian Anastasov
2392debc2b
ipv4: consider TOS in fib_select_default
...
fib_select_default considers alternative routes only when
res->fi is for the first alias in res->fa_head. In the
common case this can happen only when the initial lookup
matches the first alias with highest TOS value. This
prevents the alternative routes to require specific TOS.
This patch solves the problem as follows:
- routes that require specific TOS should be returned by
fib_select_default only when TOS matches, as already done
in fib_table_lookup. This rule implies that depending on the
TOS we can have many different lists of alternative gateways
and we have to keep the last used gateway (fa_default) in first
alias for the TOS instead of using single tb_default value.
- as the aliases are ordered by many keys (TOS desc,
fib_priority asc), we restrict the possible results to
routes with matching TOS and lowest metric (fib_priority)
and routes that match any TOS, again with lowest metric.
For example, packet with TOS 8 can not use gw3 (not lowest
metric), gw4 (different TOS) and gw6 (not lowest metric),
all other gateways can be used:
tos 8 via gw1 metric 2 <--- res->fa_head and res->fi
tos 8 via gw2 metric 2
tos 8 via gw3 metric 3
tos 4 via gw4
tos 0 via gw5
tos 0 via gw6 metric 1
Reported-by: Hagen Paul Pfeifer <hagen@jauu.net>
Signed-off-by: Julian Anastasov <ja@ssi.bg>
Signed-off-by: David S. Miller <davem@davemloft.net>
2015-07-24 22:46:11 -07:00
..
9p
9p: switch p9_client_read() to passing struct iov_iter *
2015-04-11 22:28:27 -04:00
bluetooth
Bluetooth: hci_core: increase max adv inst
2015-06-18 18:11:53 +02:00
caif
caif: fix a signedness bug in cfpkt_iterate()
2015-02-20 17:35:14 -05:00
irda
irda: Convert function pointer arrays and uses to const
2014-12-10 15:33:16 -05:00
iucv
netfilter
netfilter: nf_qeueue: Drop queue entries on nf_unregister_hook
2015-06-23 06:23:23 -07:00
netns
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-06-24 02:58:51 -07:00
nfc
NFC: nci: add generic uart support
2015-06-11 23:37:37 +02:00
phonet
sctp
sctp: fix ASCONF list handling
2015-06-14 12:55:49 -07:00
tc_act
act_bpf: add initial eBPF support for actions
2015-03-20 19:10:44 -04:00
6lowpan.h
ieee802154: 6lowpan: rename process_data and lowpan_process_data
2014-10-27 15:51:16 +01:00
act_api.h
net_sched: act: refuse to remove bound action outside
2014-02-12 19:23:32 -05:00
addrconf.h
net: Export IGMP/MLD message validation code
2015-05-04 14:49:23 -04:00
af_ieee802154.h
ieee802154: mac802154: remove FSF address
2014-10-25 08:07:30 +02:00
af_rxrpc.h
af_unix.h
net/unix: support SCM_SECURITY for stream sockets
2015-06-10 22:49:20 -07:00
af_vsock.h
net: Pass kern from net_proto_family.create to sk_alloc
2015-05-11 10:50:17 -04:00
ah.h
ipsec: Remove obsolete MAX_AH_AUTH_LEN
2014-09-18 10:54:36 +02:00
arp.h
neigh: Factor out ___neigh_lookup_noref
2015-03-04 00:23:23 -05:00
atmclip.h
ax25.h
ax25: Stop using sock->sk_protinfo.
2015-06-28 16:55:44 -07:00
ax88796.h
bond_3ad.h
bonding: Implement port churn-machine (AD standard 43.4.17).
2015-02-24 16:05:48 -05:00
bond_alb.h
net: Move bonding headers under include/net
2014-11-10 13:27:49 -05:00
bond_options.h
bonding: Implement user key part of port_key in an AD system.
2015-05-11 10:59:32 -04:00
bonding.h
bonding: Implement user key part of port_key in an AD system.
2015-05-11 10:59:32 -04:00
busy_poll.h
sched, net: Fixup busy_loop_us_clock()
2014-01-13 17:39:11 +01:00
cfg80211-wext.h
cfg80211.h
cfg80211: use RTNL locked reg_can_beacon for IR-relaxation
2015-07-17 15:02:02 +02:00
cfg802154.h
nl802154: add support to set cca ed level
2015-05-27 19:29:42 +02:00
checksum.h
net: fix sparse error in csum_replace4()
2015-05-17 13:08:29 -04:00
cipso_ipv4.h
cipso: don't use IPCB() to locate the CIPSO IP option
2015-02-11 14:46:37 -05:00
cls_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
codel.h
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
2015-05-13 14:31:43 -04:00
compat.h
net: switch importing msghdr from userland to {compat_,}import_iovec()
2015-04-09 00:02:26 -04:00
datalink.h
net: Move prototype declaration to header file include/net/datalink.h from net/ipx/af_ipx.c
2014-02-09 17:32:50 -08:00
dcbevent.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
dcbnl.h
net/dcb: Add IEEE QCN attribute
2015-03-06 21:50:02 -05:00
dn.h
net: Move prototype declaration to header file include/net/dn.h from net/decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dn_dev.h
dn_dev: add support for IFA_FLAGS nl attribute
2013-12-10 21:50:00 -05:00
dn_fib.h
dn_neigh.h
netfilter: Pass socket pointer down through okfn().
2015-04-07 15:25:55 -04:00
dn_nsp.h
dn_route.h
net: Move prototype declaration to appropriate header file from decnet/af_decnet.c
2014-02-09 17:32:49 -08:00
dsa.h
net: dsa: Add basic framework to support ndo_fdb functions
2015-03-29 13:23:54 -07:00
dsfield.h
dst.h
net: make skb_dst_pop routine static
2015-05-12 23:19:49 -04:00
dst_ops.h
net: Remove protocol from struct dst_ops
2015-03-09 16:06:10 -04:00
esp.h
ethoc.h
net: ethoc: set up MII management bus clock
2014-02-04 20:19:51 -08:00
fib_rules.h
net: ipv4 sysctl option to ignore routes when nexthop link is down
2015-06-24 02:15:54 -07:00
firewire.h
flow.h
ipv4, fib: pass LOOPBACK_IFINDEX instead of 0 to flowi4_iif
2014-04-16 15:05:11 -04:00
flow_dissector.h
mpls: Add MPLS entropy label in flow_keys
2015-06-04 15:44:31 -07:00
flowcache.h
flowcache: Make flow cache name space aware
2014-02-12 07:02:11 +01:00
fou.h
ip_tunnel: Ops registration for secondary encap (fou, gue)
2014-11-12 15:01:35 -05:00
garp.h
gen_stats.h
net: sched: enable per cpu qstats
2014-09-30 01:02:26 -04:00
genetlink.h
net: Introduce possible_net_t
2015-03-12 14:39:40 -04:00
geneve.h
geneve: move definition of geneve_hdr() to geneve.h
2015-05-13 15:59:13 -04:00
gre.h
gre: Call gso_make_checksum
2014-06-04 22:46:38 -07:00
gro_cells.h
ip_tunnel: Create percpu gro_cell
2015-01-18 01:56:32 -05:00
gue.h
gue: Protocol constants for remote checksum offload
2014-11-05 16:30:03 -05:00
icmp.h
ieee80211_radiotap.h
mac80211: propagate STBC / LDPC flags to radiotap
2014-02-06 09:34:58 +01:00
ieee802154_netdev.h
mac802154: cleanup llsec param flags
2015-06-12 11:42:29 +02:00
if_inet6.h
ipv6: do retries on stable privacy addresses
2015-03-23 22:12:09 -04:00
inet6_connection_sock.h
inet: get rid of central tcp/dccp listener timer
2015-03-20 12:40:25 -04:00
inet6_hashtables.h
ipv6: get rid of __inet6_hash()
2015-03-18 22:00:35 -04:00
inet_common.h
net: Modify sk_alloc to not reference count the netns of kernel sockets.
2015-05-11 10:50:18 -04:00
inet_connection_sock.h
tcp: fix child sockets to use system default congestion control if not set
2015-05-31 21:49:14 -07:00
inet_ecn.h
tunnel: fix RFC number in comment for INET_ECN_decapsulate()
2014-05-07 15:30:52 -04:00
inet_frag.h
ip_fragment: don't forward defragmented DF packet
2015-05-27 13:03:31 -04:00
inet_hashtables.h
tcp: fix/cleanup inet_ehash_locks_alloc()
2015-05-26 19:48:46 -04:00
inet_sock.h
inet: add IP_BIND_ADDRESS_NO_PORT to overcome bind(0) limitations
2015-06-06 23:57:12 -07:00
inet_timewait_sock.h
tcp/dccp: get rid of central timewait timer
2015-04-13 16:40:05 -04:00
inetpeer.h
tcp: simplify inetpeer_addr_base use
2015-03-31 13:58:35 -04:00
ip.h
ipv6: lock socket in ip6_datagram_connect()
2015-07-15 17:25:51 -07:00
ip6_checksum.h
net: add gro_compute_pseudo functions
2014-08-24 18:09:23 -07:00
ip6_fib.h
ipv6: Create percpu rt6_info
2015-05-25 13:25:35 -04:00
ip6_route.h
ipv6: Add rt6_get_cookie() function
2015-05-25 13:25:34 -04:00
ip6_tunnel.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
ip_fib.h
ipv4: consider TOS in fib_select_default
2015-07-24 22:46:11 -07:00
ip_tunnels.h
ipip,gre,vti,sit: implement ndo_get_iflink
2015-04-02 14:05:00 -04:00
ip_vs.h
net: Introduce possible_net_t
2015-03-12 14:39:40 -04:00
ipcomp.h
ipconfig.h
ipv6.h
net: Add full IPv6 addresses to flow_keys
2015-06-04 15:44:30 -07:00
ipx.h
switch ipxrtr_route_packet() from iovec to msghdr
2014-11-24 04:28:49 -05:00
iw_handler.h
wext: add checked wrappers for adding events/points to streams
2015-02-28 21:31:12 +01:00
lapb.h
lib80211.h
lib80211: remove unused print_ssid()
2014-10-14 02:18:27 +02:00
llc.h
llc: make lock static
2014-01-03 20:56:48 -05:00
llc_c_ac.h
llc_c_ev.h
llc_c_st.h
llc: Make llc_conn_ev_qfyr_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_conn.h
net: Pass kern from net_proto_family.create to sk_alloc
2015-05-11 10:50:17 -04:00
llc_if.h
llc_pdu.h
net: llc: fix order of evaluation in llc_conn_ac_inc_vr_by_1
2014-01-01 22:22:43 -05:00
llc_s_ac.h
llc_s_ev.h
llc_s_st.h
llc: Make llc_sap_action_t function pointer arrays const
2014-12-10 15:21:24 -05:00
llc_sap.h
mac80211.h
mac80211: convert HW flags to unsigned long bitmap
2015-06-10 16:05:36 +02:00
mac802154.h
mac802154: fix flags BIT definitions order
2015-06-12 11:43:58 +02:00
mip6.h
include/net/: Fix FSF address in file headers
2013-12-06 12:37:56 -05:00
mld.h
ipv6: mld: answer mldv2 queries with mldv1 reports in mldv1 fallback
2014-09-22 16:23:15 -04:00
mpls.h
openvswitch: Add basic MPLS support to kernel
2014-11-05 23:52:33 -08:00
mrp.h
ndisc.h
neigh: Factor out ___neigh_lookup_noref
2015-03-04 00:23:23 -05:00
neighbour.h
net: neighbour: Add mcast_resolicit to configure the number of multicast resolicitations in PROBE state.
2015-03-20 21:47:40 -04:00
net_namespace.h
net: include missing headers in net/net_namespace.h
2015-06-18 21:14:29 +02:00
net_ratelimit.h
netevent.h
netlabel.h
netlabel: fix the netlbl_catmap_setlong() dummy function
2014-08-07 20:55:21 -04:00
netlink.h
netlink: implement nla_get_in_addr and nla_get_in6_addr
2015-03-31 13:58:35 -04:00
netprio_cgroup.h
cgroup: clean up cgroup_subsys names and initialization
2014-02-08 10:36:58 -05:00
netrom.h
nexthop.h
nl802154.h
nl802154: fix misspelled enum
2015-06-10 12:24:33 +02:00
p8022.h
ping.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
pkt_cls.h
net: sched: remove tcf_proto from ematch calls
2014-10-06 18:02:32 -04:00
pkt_sched.h
net: rename vlan_tx_* helpers since "tx" is misleading there
2015-01-13 17:51:08 -05:00
protocol.h
net: Eliminate no_check from protosw
2014-05-23 16:28:53 -04:00
psnap.h
raw.h
rawv6.h
red.h
reciprocal_divide: update/correction of the algorithm
2014-01-21 23:17:20 -08:00
regulatory.h
cfg80211: allow wiphy specific regdomain management
2014-12-17 11:49:55 +01:00
request_sock.h
tcp: provide SYN headers for passive connections
2015-05-05 16:02:34 -04:00
rose.h
route.h
ipv4: per cpu uncached list
2015-01-15 18:26:16 -05:00
rtnetlink.h
rtnetlink: Mark name argument of rtnl_create_link() const
2015-04-10 12:42:40 -07:00
sch_generic.h
net: sched: use counter to break reclassify loops
2015-05-13 15:08:14 -04:00
scm.h
secure_seq.h
inetpeer: get rid of ip_id_count
2014-06-02 11:00:41 -07:00
slhc_vj.h
snmp.h
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
sock.h
net: Kill sock->sk_protinfo
2015-06-28 16:55:44 -07:00
Space.h
drivers: net: Include new header file in sbni.c
2013-12-19 18:51:20 -05:00
stp.h
switchdev.h
switchdev: rename vlan vid_start to vid_begin
2015-06-23 06:56:18 -07:00
tcp.h
tcp: fill shinfo->gso_size at last moment
2015-06-11 16:33:11 -07:00
tcp_memcontrol.h
tcp_states.h
inet: add TCP_NEW_SYN_RECV state
2015-03-12 22:58:12 -04:00
timewait_sock.h
transp_v6.h
ipv6: make IPV6_RECVPKTINFO work for ipv4 datagrams
2014-01-19 19:53:18 -08:00
tso.h
net: Add a software TSO helper API
2014-05-22 14:57:15 -04:00
udp.h
net: Remove iocb argument from sendmsg and recvmsg
2015-03-02 13:06:31 -05:00
udp_tunnel.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
udplite.h
net: switch memcpy_fromiovec()/memcpy_fromiovecend() users to copy_from_iter()
2015-02-04 01:34:15 -05:00
vsock_addr.h
vxlan.h
udp_tunnel: Pass UDP socket down through udp_tunnel{, 6}_xmit_skb().
2015-04-07 15:29:08 -04:00
wext.h
wimax.h
net: treewide: Fix typo found in DocBook/networking.xml
2014-09-05 17:35:28 -07:00
x25.h
x25device.h
xfrm.h
ipsec: Add IV generator information to xfrm_state
2015-05-28 11:23:20 +08:00