#compdef curvetun # # curvetun.zsh -- zsh completion function for curvetun # # Copyright (C) 2013 Hideo Hattori # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License version 2 as # published by the Free Software Foundation. typeset -A opt_args _interfaces () { _wanted interfaces expl 'network interface' \ _net_interfaces _values "Pseudo-device that captures on all interfaces" "any" } _arguments -s -S \ "(-k --keygen)"{-k,--keygen}"[Generate public/private keypair]" \ "(-x --export)"{-x,--export}"[Export your public data for remote servers]" \ "(-C --dumpc)"{-C,--dumpc}"[Dump parsed clients]" \ "(-S --dumps)"{-S,--dumps}"[Dump parsed servers]" \ "(-D --nofork)"{-D,--nofork}"[Do not daemonize]" \ "(-d --dev)"{-d,--dev}"[Networking tunnel device, e.g. tun0]:device:_interfaces" \ {-v,--version}"[Print version]:" \ {-h,--help}"[Print this help]:" \ "(-s --server -N --no-logging -p --port -t --stun -u --udp -4 --ipv4 -6 --ipv6 -c --client)"{-c,--client}"[Client mode, server alias optional]:client:_gnu_generic" \ "(-c --client -s --server)"{-s,--server}"[Server mode]" \ "(-c --client -N --no-logging)"{-N,--no-logging}"[Disable server logging (for better anonymity)]" \ "(-c --client -p --port)"{-p,--port}"[Port number (mandatory)]:port:_gnu_generic" \ "(-c --client -t --stun)"{-t,--stun}"[Show public IP/Port mapping via STUN]:stun:_gnu_generic" \ "(-c --client -u --udp)"{-u,--udp}"[Use UDP as carrier instead of TCP]" \ "(-c --client -4 --ipv4)"{-4,--ipv4}"[Tunnel devices are IPv4]" \ "(-c --client -6 --ipv6)"{-6,--ipv6}"[Tunnel devices are IPv6 (default: same as carrier protocol)]" \ "*::args:_gnu_generic" net-next.git/tree/?h=nds-private-remove&id=e252536068efd1578c6e23e7323527c5e6e980bd'>treecommitdiff
diff options
context:
space:
mode:
authorMahesh Bandewar <maheshb@google.com>2016-12-21 17:30:16 -0800
committerDavid S. Miller <davem@davemloft.net>2016-12-23 17:53:47 -0500
commite252536068efd1578c6e23e7323527c5e6e980bd (patch)
tree9ce475c5704e5fd34e5dac3afdb40b9da07e1b81
parentb1227d019fa98c43381ad8827baf7efbe2923ed1 (diff)
ipvlan: fix multicast processing
In an IPvlan setup when master is set in loopback mode e.g. ethtool -K eth0 set loopback on where eth0 is master device for IPvlan setup. The failure is caused by the faulty logic that determines if the packet is from TX-path vs. RX-path by just looking at the mac- addresses on the packet while processing multicast packets. In the loopback-mode where this crash was happening, the packets that are sent out are reflected by the NIC and are processed on the RX path, but mac-address check tricks into thinking this packet is from TX path and falsely uses dev_forward_skb() to pass packets to the slave (virtual) devices. This patch records the path while queueing packets and eliminates logic of looking at mac-addresses for the same decision. ------------[ cut here ]------------ kernel BUG at include/linux/skbuff.h:1737! Call Trace: [<ffffffff921fbbc2>] dev_forward_skb+0x92/0xd0 [<ffffffffc031ac65>] ipvlan_process_multicast+0x395/0x4c0 [ipvlan] [<ffffffffc031a9a7>] ? ipvlan_process_multicast+0xd7/0x4c0 [ipvlan] [<ffffffff91cdfea7>] ? process_one_work+0x147/0x660 [<ffffffff91cdff09>] process_one_work+0x1a9/0x660 [<ffffffff91cdfea7>] ? process_one_work+0x147/0x660 [<ffffffff91ce086d>] worker_thread+0x11d/0x360 [<ffffffff91ce0750>] ? rescuer_thread+0x350/0x350 [<ffffffff91ce960b>] kthread+0xdb/0xe0 [<ffffffff91c05c70>] ? _raw_spin_unlock_irq+0x30/0x50 [<ffffffff91ce9530>] ? flush_kthread_worker+0xc0/0xc0 [<ffffffff92348b7a>] ret_from_fork+0x9a/0xd0 [<ffffffff91ce9530>] ? flush_kthread_worker+0xc0/0xc0 Fixes: ba35f8588f47 ("ipvlan: Defer multicast / broadcast processing to a work-queue") Signed-off-by: Mahesh Bandewar <maheshb@google.com> CC: Eric Dumazet <edumazet@google.com> Signed-off-by: David S. Miller <davem@davemloft.net>