android_kernel_msm-6.1_noth.../include/uapi/linux
David Ahern 96c63fa739 net: Add l3mdev rule
Currently, VRFs require 1 oif and 1 iif rule per address family per
VRF. As the number of VRF devices increases it brings scalability
issues with the increasing rule list. All of the VRF rules have the
same format with the exception of the specific table id to direct the
lookup. Since the table id is available from the oif or iif in the
loopup, the VRF rules can be consolidated to a single rule that pulls
the table from the VRF device.

This patch introduces a new rule attribute l3mdev. The l3mdev rule
means the table id used for the lookup is pulled from the L3 master
device (e.g., VRF) rather than being statically defined. With the
l3mdev rule all of the basic VRF FIB rules are reduced to 1 l3mdev
rule per address family (IPv4 and IPv6).

If an admin wishes to insert higher priority rules for specific VRFs
those rules will co-exist with the l3mdev rule. This capability means
current VRF scripts will co-exist with this new simpler implementation.

Currently, the rules list for both ipv4 and ipv6 look like this:
    $ ip  ru ls
    1000:       from all oif vrf1 lookup 1001
    1000:       from all iif vrf1 lookup 1001
    1000:       from all oif vrf2 lookup 1002
    1000:       from all iif vrf2 lookup 1002
    1000:       from all oif vrf3 lookup 1003
    1000:       from all iif vrf3 lookup 1003
    1000:       from all oif vrf4 lookup 1004
    1000:       from all iif vrf4 lookup 1004
    1000:       from all oif vrf5 lookup 1005
    1000:       from all iif vrf5 lookup 1005
    1000:       from all oif vrf6 lookup 1006
    1000:       from all iif vrf6 lookup 1006
    1000:       from all oif vrf7 lookup 1007
    1000:       from all iif vrf7 lookup 1007
    1000:       from all oif vrf8 lookup 1008
    1000:       from all iif vrf8 lookup 1008
    ...
    32765:      from all lookup local
    32766:      from all lookup main
    32767:      from all lookup default

With the l3mdev rule the list is just the following regardless of the
number of VRFs:
    $ ip ru ls
    1000:       from all lookup [l3mdev table]
    32765:      from all lookup local
    32766:      from all lookup main
    32767:      from all lookup default

(Note: the above pretty print of the rule is based on an iproute2
       prototype. Actual verbage may change)

Signed-off-by: David Ahern <dsa@cumulusnetworks.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2016-06-08 11:36:02 -07:00
..
android
byteorder include/uapi/linux/byteorder, swab: force inlining of some byteswap operations 2016-03-17 15:09:34 -07:00
caif
can
cifs
dvb
genwqe
hdlc
hsi
iio iio: Add channel for UV index 2016-04-03 11:14:01 +01:00
isdn
mmc
netfilter netfilter: nf_tables: allow set names up to 32 bytes 2016-05-05 16:39:51 +02:00
netfilter_arp
netfilter_bridge
netfilter_ipv4
netfilter_ipv6
nfsd
raid
spi
sunrpc
tc_act Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-15 13:32:48 -04:00
tc_ematch
usb USB: PD: additional feature selectors 2016-04-19 04:33:15 +09:00
wimax
a.out.h
acct.h
adb.h
adfs_fs.h
affs_hardblocks.h
agpgart.h
aio_abi.h
am437x-vpfe.h
apm_bios.h
arcfb.h
atalk.h
atm.h
atm_eni.h
atm_he.h
atm_idt77105.h
atm_nicstar.h
atm_tcp.h
atm_zatm.h
atmapi.h
atmarp.h
atmbr2684.h
atmclip.h
atmdev.h
atmioc.h
atmlec.h
atmmpc.h
atmppp.h
atmsap.h
atmsvc.h
audit.h audit: stop an old auditd being starved out by a new auditd 2016-01-25 18:04:15 -05:00
auto_fs.h autofs4: fix some white space errors 2016-03-15 16:55:16 -07:00
auto_fs4.h autofs4: fix some white space errors 2016-03-15 16:55:16 -07:00
auxvec.h
ax25.h
b1lli.h
baycom.h
bcache.h
bcm933xx_hcs.h
bfs_fs.h
binfmts.h
blkpg.h
blktrace_api.h
bpf.h bpf: direct packet access 2016-05-06 16:01:53 -04:00
bpf_common.h
bpqether.h
bsg.h
btrfs.h Merge branch 'foreign/jeffm/uapi' into for-chris-4.7-20160516 2016-05-16 15:46:29 +02:00
btrfs_tree.h btrfs: uapi/linux/btrfs_tree.h, use __u8 and __u64 2016-04-28 11:06:41 +02:00
can.h
capability.h
capi.h
cciss_defs.h
cciss_ioctl.h
cdrom.h
cgroupstats.h
chio.h
cm4000_cs.h
cn_proc.h
coda.h
coda_psdev.h
coff.h
connector.h
const.h
coresight-stm.h coresight: stm: adding driver for CoreSight STM component 2016-05-03 14:59:30 -07:00
cramfs_fs.h
cryptouser.h
cuda.h
cyclades.h
cycx_cfm.h
dcbnl.h
dccp.h
devlink.h devlink: implement shared buffer occupancy monitoring interface 2016-04-14 16:22:03 -04:00
dlm.h
dlm_device.h
dlm_netlink.h
dlm_plock.h
dlmconstants.h
dm-ioctl.h
dm-log-userspace.h
dma-buf.h dma-buf: Add ioctls to allow userspace to flush 2016-02-12 16:01:32 +01:00
dn.h
dqblk_xfs.h quota: add new quotactl Q_XGETNEXTQUOTA 2016-02-08 11:21:50 +11:00
edd.h
efs_fs_sb.h
elf-em.h include/uapi/linux/elf-em.h: remove v850 2016-03-17 15:09:34 -07:00
elf-fdpic.h
elf.h Elf: add livepatch-specific Elf constants 2016-04-01 15:00:10 +02:00
elfcore.h
errno.h
errqueue.h
ethtool.h ethtool: add support for 25G/50G/100G speed modes 2016-05-25 12:26:54 -07:00
eventpoll.h epoll: add EPOLLEXCLUSIVE flag 2016-01-20 17:09:18 -08:00
fadvise.h
falloc.h
fanotify.h
fb.h
fcntl.h
fd.h
fdreg.h
fib_rules.h net: Add l3mdev rule 2016-06-08 11:36:02 -07:00
fiemap.h
filter.h
firewire-cdev.h
firewire-constants.h
flat.h
fou.h
fs.h libnvdimm for 4.7 2016-05-23 11:18:01 -07:00
fsl_hypervisor.h
fuse.h
futex.h
gameport.h
gen_stats.h sched: align nlattr properly when needed 2016-04-26 12:00:49 -04:00
genetlink.h openvswitch: allow management from inside user namespaces 2016-02-11 09:53:19 -05:00
gfs2_ondisk.h
gigaset_dev.h
gpio.h gpio: uapi: use 0xB4 as ioctl() major 2016-03-10 16:02:52 +07:00
gsmmux.h
gtp.h gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
hash_info.h
hdlc.h
hdlcdrv.h
hdreg.h
hid.h
hiddev.h
hidraw.h
hpet.h
hsr_netlink.h
hw_breakpoint.h
hyperv.h
hysdn_if.h
i2c-dev.h
i2c.h i2c: guarantee that I2C_M_RD will be 0x0001 forever 2016-04-11 18:54:59 +02:00
i2o-dev.h
i8k.h
icmp.h
icmpv6.h
if.h uapi glibc compat: fix compile errors when glibc net/if.h included before linux/if.h 2016-05-09 21:29:31 -04:00
if_addr.h
if_addrlabel.h
if_alg.h
if_arcnet.h
if_arp.h
if_bonding.h
if_bridge.h bridge: netlink: export per-vlan stats 2016-05-02 22:27:06 -04:00
if_cablemodem.h
if_eql.h
if_ether.h net/hsr: Added support for HSR v1 2016-04-15 17:06:48 -04:00
if_fc.h
if_fddi.h
if_frad.h
if_hippi.h
if_infiniband.h
if_link.h gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
if_ltalk.h
if_macsec.h Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2016-05-09 15:59:24 -04:00
if_packet.h
if_phonet.h
if_plip.h
if_ppp.h
if_pppol2tp.h
if_pppox.h
if_slip.h
if_team.h
if_tun.h
if_tunnel.h
if_vlan.h
if_x25.h
igmp.h
ila.h ila: add checksum neutral ILA translations 2016-04-26 01:27:07 -04:00
in.h
in6.h
in_route.h
inet_diag.h sock_diag: align nlattr properly when needed 2016-04-26 12:00:48 -04:00
inotify.h
input-event-codes.h
input.h Input: synaptics-rmi4 - add support for Synaptics RMI4 devices 2016-03-10 16:02:39 -08:00
ioctl.h
ip.h ipv4: add option to drop gratuitous ARP packets 2016-02-11 04:27:35 -05:00
ip6_tunnel.h
ip_vs.h netfilter/ipvs: use nla_put_u64_64bit() 2016-04-25 15:09:11 -04:00
ipc.h
ipmi.h
ipmi_msgdefs.h
ipsec.h
ipv6.h Revert "ipv6: Revert optional address flusing on ifdown." 2016-04-26 11:47:41 -04:00
ipv6_route.h
ipx.h
irda.h
irqnr.h
isdn.h
isdn_divertif.h
isdn_ppp.h
isdnif.h
iso_fs.h
ivtv.h
ivtvfb.h
ixjuser.h
jffs2.h
joystick.h
Kbuild gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
kcm.h kcm: Kernel Connection Multiplexor module 2016-03-09 16:36:14 -05:00
kcmp.h
kcov.h kernel: add kcov code coverage 2016-03-22 15:36:02 -07:00
kd.h
kdev_t.h
kernel-page-flags.h
kernel.h uapi: define DIV_ROUND_UP for userland 2016-03-04 16:10:36 -05:00
kernelcapi.h
kexec.h
keyboard.h
keyctl.h KEYS: Add KEYCTL_DH_COMPUTE command 2016-04-12 19:54:58 +01:00
kfd_ioctl.h
kvm.h kvm: introduce KVM_MAX_VCPU_ID 2016-05-11 22:37:54 +02:00
kvm_para.h
l2tp.h l2tp: use nla_put_u64_64bit() 2016-04-25 15:09:10 -04:00
libc-compat.h uapi glibc compat: fix compilation when !__USE_MISC in glibc 2016-05-20 19:57:22 -04:00
lightnvm.h lightnvm: introduce factory reset 2016-01-12 08:21:18 -07:00
limits.h
lirc.h
llc.h
loop.h
lp.h
lwtunnel.h libnl: nla_put_be64(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
magic.h udf: Export superblock magic to userspace 2016-04-28 10:43:31 +02:00
major.h
map_to_7segment.h
matroxfb.h
mdio.h
media-bus-format.h
media.h Merge commit '840f5b0572' into v4l_for_linus 2016-03-15 07:48:28 -03:00
mei.h
membarrier.h
memfd.h
mempolicy.h
meye.h
mic_common.h
mic_ioctl.h
mii.h
minix_fs.h
mman.h
mmtimer.h
module.h
mpls.h
mpls_iptunnel.h
mqueue.h
mroute.h
mroute6.h uapi: define DIV_ROUND_UP for userland 2016-03-04 16:10:36 -05:00
msdos_fs.h
msg.h
mtio.h
n_r3964.h
nbd.h
ncp.h
ncp_fs.h
ncp_mount.h
ncp_no.h
ndctl.h Merge branch 'for-4.7/dsm' into libnvdimm-for-next 2016-05-18 10:06:59 -07:00
neighbour.h libnl: nla_put_msecs(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
net.h
net_dropmon.h
net_namespace.h
net_tstamp.h sock: accept SO_TIMESTAMPING flags in socket cmsg 2016-04-04 15:50:30 -04:00
netconf.h netconf: add macro to represent all attributes 2016-03-13 21:54:44 -04:00
netdevice.h
netfilter.h
netfilter_arp.h
netfilter_bridge.h
netfilter_decnet.h
netfilter_ipv4.h
netfilter_ipv6.h
netlink.h netlink: remove mmapped netlink support 2016-02-18 11:42:18 -05:00
netlink_diag.h netlink: remove mmapped netlink support 2016-02-18 11:42:18 -05:00
netrom.h
nfc.h
nfs.h
nfs2.h
nfs3.h
nfs4.h
nfs4_mount.h
nfs_fs.h
nfs_idmap.h
nfs_mount.h
nfsacl.h
nl80211.h nl80211: use nla_put_u64_64bit() for the remaining u64 attributes 2016-04-27 11:01:13 +02:00
nubus.h
nvme_ioctl.h NVMe: Allow user initiated rescan 2016-05-17 17:14:21 -06:00
nvram.h
omap3isp.h
omapfb.h
oom.h
openvswitch.h ovs: align nlattr properly when needed 2016-04-26 12:00:48 -04:00
packet_diag.h
param.h
parport.h
patchkey.h
pci.h
pci_regs.h PCI: Add Downstream Port Containment driver 2016-05-03 10:39:24 -05:00
perf_event.h perf core: Separate accounting of contexts and real addresses in a stack trace 2016-05-16 23:11:53 -03:00
personality.h
pfkeyv2.h
pg.h
phantom.h
phonet.h
pkt_cls.h net sched: indentation and other OCD stylistic fixes 2016-06-07 15:53:54 -07:00
pkt_sched.h fq_codel: add memory limitation per queue 2016-05-08 23:49:38 -04:00
pktcdvd.h
pmu.h
poll.h
posix_types.h
ppdev.h
ppp-comp.h
ppp-ioctl.h
ppp_defs.h
pps.h
pr.h
prctl.h
psci.h
ptp_clock.h ptp: Add PTP_SYS_OFFSET_PRECISE for driver crosstimestamping 2016-03-03 14:23:43 -08:00
ptrace.h
qnx4_fs.h
qnxtypes.h
qrtr.h net: Add Qualcomm IPC router 2016-05-08 23:46:14 -04:00
quota.h fs/quota: use nla_put_u64_64bit() 2016-04-26 12:00:48 -04:00
radeonfb.h
random.h
raw.h
rds.h
reboot.h
reiserfs_fs.h
reiserfs_xattr.h
resource.h
rfkill.h rfkill: Update userspace API documentation 2016-02-24 09:04:25 +01:00
rio_mport_cdev.h rapidio/mport_cdev: fix uapi type definitions 2016-05-05 17:38:53 -07:00
romfs_fs.h
rose.h
route.h
rtc.h
rtnetlink.h sched: align nlattr properly when needed 2016-04-26 12:00:49 -04:00
scc.h
sched.h sched: new clone flag CLONE_NEWCGROUP for cgroup namespace 2016-02-16 13:04:58 -05:00
scif_ioctl.h
screen_info.h
sctp.h
sdla.h
seccomp.h
securebits.h
selinux_netlink.h
sem.h
serial.h
serial_core.h TTY and Serial driver update for 4.7-rc1 2016-05-20 20:57:27 -07:00
serial_reg.h
serio.h
shm.h
signal.h signals/sigaltstack: Change SS_AUTODISARM to (1U << 31) 2016-05-04 08:34:14 +02:00
signalfd.h
smiapp.h
snmp.h
sock_diag.h sock_diag: add SK_MEMINFO_DROPS 2016-04-04 22:11:20 -04:00
socket.h
sockios.h
sonet.h
sonypi.h
sound.h
soundcard.h
stat.h
stddef.h uapi/linux/stddef.h: Provide __always_inline to userspace headers 2016-03-30 12:50:17 +02:00
stm.h
string.h
suspend_ioctls.h
swab.h byteswap: try to avoid __builtin_constant_p gcc bug 2016-05-05 17:38:53 -07:00
sync_file.h dma-buf/sync_file: de-stage sync_file headers 2016-04-29 17:37:10 -07:00
synclink.h
sysctl.h
sysinfo.h
target_core_user.h target/user: Report capability of handling out-of-order completions to userspace 2016-03-10 21:49:09 -08:00
taskstats.h
tcp.h tcp: Add RFC4898 tcpEStatsPerfDataSegsOut/In 2016-03-14 14:55:26 -04:00
tcp_metrics.h libnl: nla_put_msecs(): align on a 64-bit area 2016-04-23 20:13:24 -04:00
telephony.h
termios.h
thermal.h
time.h
times.h
timex.h
tiocl.h
tipc.h
tipc_config.h
tipc_netlink.h
toshiba.h
tty.h
tty_flags.h tty: core: Undefine ASYNC_* flags superceded by TTY_PORT* flags 2016-04-30 09:26:55 -07:00
types.h
udf_fs_i.h
udp.h gtp: add initial driver for datapath of GPRS Tunneling Protocol (GTP-U) 2016-05-10 12:25:04 -04:00
uhid.h
uinput.h
uio.h
ultrasound.h
un.h
unistd.h
unix_diag.h
usbdevice_fs.h usb: devio: Add ioctl to disallow detaching kernel USB drivers. 2016-03-05 12:05:01 -08:00
usbip.h
userfaultfd.h
userio.h
utime.h
utsname.h
uuid.h lib/uuid.c: remove FSF address 2016-05-20 17:58:30 -07:00
uvcvideo.h
v4l2-common.h [media] media: v4l: Dual license v4l2-common.h under GPL v2 and BSD licenses 2016-02-01 08:47:05 -02:00
v4l2-controls.h [media] v4l: add V4L2_CID_MPEG_VIDEO_FORCE_KEY_FRAME 2016-02-19 08:10:35 -02:00
v4l2-dv-timings.h [media] v4l2-dv-timings.h: fix polarity for 4k formats 2016-04-25 10:19:56 -03:00
v4l2-mediabus.h
v4l2-subdev.h
veth.h
vfio.h vfio/pci: Intel IGD host and LCP bridge config space access 2016-02-22 16:10:09 -07:00
vhost.h vhost_net: basic polling support 2016-03-11 02:18:53 +02:00
videodev2.h [media] videodev2.h: remove 'experimental' annotations 2016-04-25 08:04:12 -03:00
virtio_9p.h
virtio_balloon.h virtio_balloon: export 'available' memory to balloon statistics 2016-03-17 15:09:34 -07:00
virtio_blk.h virtio_blk: VIRTIO_BLK_F_WCE->VIRTIO_BLK_F_FLUSH 2016-03-02 17:01:59 +02:00
virtio_config.h virtio: add VIRTIO_CONFIG_S_NEEDS_RESET device status bit 2016-04-07 15:16:41 +03:00
virtio_console.h
virtio_gpu.h
virtio_ids.h
virtio_input.h
virtio_net.h virtio-net: Add initial MTU advice feature 2016-06-06 21:08:49 -04:00
virtio_pci.h
virtio_ring.h
virtio_rng.h
virtio_scsi.h
virtio_types.h
vm_sockets.h
vsp1.h
vt.h tty: vt, remove reduntant check 2016-04-30 09:26:55 -07:00
wait.h
wanrouter.h
watchdog.h
wil6210_uapi.h
wimax.h
wireless.h
x25.h
xattr.h
xfrm.h xfrm: align nlattr properly when needed 2016-04-23 20:13:25 -04:00
xilinx-v4l2-controls.h
zorro.h
zorro_ids.h