linux/drivers
David Stevens ae88408256 VXLAN: Allow L2 redirection with L3 switching
Allow L2 redirection when VXLAN L3 switching is enabled

This patch restricts L3 switching to destination MAC addresses that are
marked as routers in order to allow virtual IP appliances that do L2
redirection to function with VXLAN L3 switching enabled.

We use L3 switching on VXLAN networks to avoid extra hops when the nominal
router for cross-subnet traffic for a VM is remote and the ultimate
destination may be local, or closer to the local node. Currently, the
destination IP address takes precedence over the MAC address in all cases.
Some network appliances receive packets for a virtualized IP address and
redirect by changing the destination MAC address (only) to be the final
destination for packet processing. VXLAN tunnel endpoints with L3 switching
enabled may then overwrite this destination MAC address based on the packet IP
address, resulting in potential loops and, at least, breaking L2 redirections
that travel through tunnel endpoints.

This patch limits L3 switching to the intended case where the original
destination MAC address is a next-hop router and relies on the destination
MAC address for all other cases, thus allowing L2 redirection and L3 switching
to coexist peacefully.

Signed-Off-By: David L Stevens <dlstevens@us.ibm.com>
Signed-off-by: David S. Miller <davem@davemloft.net>
2013-04-22 16:19:51 -04:00
..
accessibility
acpi ACPI / BGRT: Don't let users configure BGRT on non X86 systems 2013-04-03 13:17:20 +02:00
amba ARM: 7675/1: amba: tegra-ahb: Fix build error w/ PM_SLEEP w/o PM_RUNTIME 2013-03-15 17:20:02 +00:00
ata Simple stuff. See one-line summaries. 2013-03-23 12:33:36 -07:00
atm hlist: drop the node parameter from iterators 2013-02-27 19:10:24 -08:00
auxdisplay
base ACPI and power management fixes for 3.9-rc6 2013-04-04 15:56:28 -07:00
bcma bcma: export some gpio functions 2013-03-27 13:39:09 -04:00
block loop: prevent bdev freeing while device in use 2013-04-01 15:48:47 -07:00
bluetooth Merge branch 'master' of git://git.kernel.org/pub/scm/linux/kernel/git/linville/wireless 2013-03-29 16:41:36 -04:00
bus
cdrom
char One reversion, a tiny leak fix, and a cc:stable locking fix, in two parts. 2013-04-01 16:17:52 -07:00
clk clk: tegra: Allow PLLE training to succeed 2013-04-01 11:44:38 -07:00
clocksource ImgTec Meta architecture changes for v3.9-rc1 2013-03-03 12:06:09 -08:00
connector connector: replace obsolete NLMSG_* with type safe nlmsg_* 2013-03-28 14:27:44 -04:00
cpufreq cpufreq: Correct header guards typo 2013-04-02 15:14:29 +02:00
cpuidle
crypto Revert "crypto: caam - add IPsec ESN support" 2013-03-21 17:36:03 +08:00
dca dca: convert to idr_alloc() 2013-02-27 19:10:15 -08:00
devfreq
dio
dma Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-07 18:37:01 -04:00
edac EDAC: Merge mci.mem_is_per_rank with mci.csbased 2013-03-16 06:32:30 +01:00
eisa
extcon extcon: max77693: Initialize register of MUIC device to bring up it without platform data 2013-03-13 17:38:57 +09:00
firewire net: add ETH_P_802_3_MIN 2013-03-28 01:20:42 -04:00
firmware efivars: Fix check for CONFIG_EFI_VARS_PSTORE_DEFAULT_DISABLE 2013-03-22 20:08:01 +00:00
gpio Two GPIO fixes for the v3.9 series: 2013-04-04 08:40:14 -07:00
gpu drm: correctly restore mappings if drm_open fails 2013-04-03 06:44:38 +10:00
hid HID: magicmouse: fix race between input_register() and probe() 2013-04-04 09:49:56 +02:00
hsi hsi: fix kernel-doc warnings 2013-03-01 13:39:00 -08:00
hv Drivers: hv: vmbus: Use the new infrastructure for delivering VMBUS interrupts 2013-02-27 10:15:53 -08:00
hwmon hwmon: (lm75.h) Update header inclusion 2013-03-18 21:19:49 +01:00
hwspinlock
i2c ACPI / I2C: Use parent's ACPI_HANDLE() in acpi_i2c_register_devices() 2013-04-02 15:30:41 +02:00
ide Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
idle Merge branch 'core-locking-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2013-02-22 19:25:09 -08:00
iio First round of iio fixes post the 3.9 merge window. 2013-03-06 05:48:24 +08:00
infiniband net: vlan: add protocol argument to packet tagging functions 2013-04-19 14:46:06 -04:00
input arm-soc: bug fixes for 3.9-rc3 2013-03-18 08:17:14 -07:00
iommu IOMMU fixes for Linux v3.9-rc4 2013-03-27 09:25:11 -07:00
ipack
irqchip irqchip: fix typo when moving gic_raise_softirq() 2013-03-04 17:15:33 -08:00
isdn ISDN:divert: beautify code: useless 'break', 'return (0)', additional comments. 2013-04-02 14:31:24 -04:00
leds Merge branch 'for-next' of git://git.kernel.org/pub/scm/linux/kernel/git/cooloney/linux-leds 2013-02-26 09:29:02 -08:00
lguest All trivial, thanks to the stuff which didn't quite make it time. 2013-02-26 14:49:12 -08:00
macintosh Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-02-23 17:09:55 -08:00
mailbox mailbox, pl320-ipc: remove __init from probe function 2013-03-04 14:23:11 +01:00
md A few bugfixes for md 2013-03-23 15:49:49 -07:00
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-07 18:37:01 -04:00
memory
memstick memstick: move the dereference below the NULL test 2013-02-27 19:10:23 -08:00
message
mfd mfd: twl4030-madc: Remove __exit_p annotation 2013-03-15 07:42:22 +01:00
misc VMCI: Fix process-to-process DRGAMs. 2013-03-15 12:58:12 -07:00
mmc Merge branches 'devel-stable', 'fixes' and 'mmci' into for-linus 2013-03-03 00:32:50 +00:00
mtd MTD fixes for 3.9 2013-03-18 08:27:41 -07:00
net VXLAN: Allow L2 redirection with L3 switching 2013-04-22 16:19:51 -04:00
nfc Revert "NFC: microread: Fix MEI build failure" 2013-04-03 15:07:02 -04:00
ntb
nubus
of net: of_mdio: scan mdiobus for PHYs without reg property 2013-04-08 16:55:26 -04:00
oprofile fs: Limit sys_mount to only request filesystem modules. 2013-03-03 19:36:31 -08:00
parisc Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
parport Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/s390/linux 2013-02-21 17:54:03 -08:00
pci PCI: Use ROM images from firmware only if no other ROM source available 2013-03-19 14:51:14 -07:00
pcmcia Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/jikos/trivial 2013-02-21 17:40:58 -08:00
pinctrl Here are a few pinctrl fixes for the v3.9 rc series: 2013-03-24 10:11:29 -07:00
platform Platform: x86: chromeos_laptop : Add basic platform data for atmel devices 2013-03-08 16:03:29 -08:00
pnp ACPI / glue: Add .match() callback to struct acpi_bus_type 2013-03-04 14:23:40 +01:00
power power: convert to idr_alloc() 2013-02-27 19:10:18 -08:00
pps drivers/pps/clients/pps-gpio.c: use devm_kzalloc 2013-02-27 19:10:23 -08:00
ps3
ptp ptp: dynamic allocation of PHC char devices 2013-04-12 18:22:45 -04:00
pwm pwm: Changes for v3.9-rc1 2013-02-26 09:34:29 -08:00
rapidio
regulator Merge remote-tracking branch 'regulator/fix/twl' into tmp 2013-03-05 10:12:43 +08:00
remoteproc remoteproc: convert to idr_alloc() 2013-02-27 19:10:18 -08:00
rpmsg rpmsg: convert to idr_alloc() 2013-02-27 19:10:18 -08:00
rtc Revert "drivers/rtc/rtc-at91rm9200.c: use a variable for storing IMR" 2013-04-05 09:36:53 -07:00
s390 qeth: Fix missing pointer update 2013-04-22 15:39:27 -04:00
sbus Merge branch 'for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/viro/vfs 2013-02-26 20:16:07 -08:00
scsi net: vlan: rename NETIF_F_HW_VLAN_* feature flags to NETIF_F_HW_VLAN_CTAG_* 2013-04-19 14:45:26 -04:00
sfi
sh
sn
spi spi: Fixes for v3.9 2013-04-05 10:04:41 -07:00
ssb ssb: read additional sprom v2 and v3 attributes. 2013-03-25 16:46:56 -04:00
staging Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net 2013-04-01 13:36:50 -04:00
target target: Fix RESERVATION_CONFLICT status regression for iscsi-target special case 2013-03-28 23:42:47 -07:00
tc
thermal thermal: exynos_thermal: return a proper error code while thermal_zone_device_register fail. 2013-03-11 23:09:29 +08:00
tty TTY/serial fixes for 3.9-rc4 2013-03-28 15:53:33 -07:00
uio uio: convert to idr_alloc() 2013-02-27 19:10:19 -08:00
usb USB / PM: Don't try to hide PM QoS flags from usb_port_device_release() 2013-04-02 01:25:09 +02:00
uwb
vfio vfio: include <linux/slab.h> for kmalloc 2013-03-15 12:58:20 -06:00
vhost vhost_net: remove tx polling state 2013-04-11 16:16:22 -04:00
video Fix uvesafb crash bug and typoed flag name in fbmon's new videomode code 2013-04-05 09:15:46 -07:00
virt
virtio All trivial, thanks to the stuff which didn't quite make it time. 2013-02-26 14:49:12 -08:00
vlynq
vme
w1 w1: fix oops when w1_search is called from netlink connector 2013-03-12 16:20:46 -07:00
watchdog watchdog: sp5100_tco: Set the AcpiMmioSel bitmask value to 1 instead of 2 2013-03-22 23:21:55 +01:00
xen Bug-fixes: 2013-03-27 12:56:25 -07:00
zorro new helper: file_inode(file) 2013-02-22 23:31:31 -05:00
Kconfig
Makefile Merge branch 'next' of git://git.kernel.org/pub/scm/linux/kernel/git/benh/powerpc 2013-02-23 17:09:55 -08:00