• Michael Braun's avatar
    macvlan: add source mode · 79cf79ab
    Michael Braun authored
    This patch adds a new mode of operation to macvlan, called "source".
    It allows one to set a list of allowed mac address, which is used
    to match against source mac address from received frames on underlying
    interface.
    This enables creating mac based VLAN associations, instead of standard
    port or tag based. The feature is useful to deploy 802.1x mac based
    behavior, where drivers of underlying interfaces doesn't allows that.
    
    Configuration is done through the netlink interface using e.g.:
     ip link add link eth0 name macvlan0 type macvlan mode source
     ip link add link eth0 name macvlan1 type macvlan mode source
     ip link set link dev macvlan0 type macvlan macaddr add 00:11:11:11:11:11
     ip link set link dev macvlan0 type macvlan macaddr add 00:22:22:22:22:22
     ip link set link dev macvlan0 type macvlan macaddr add 00:33:33:33:33:33
     ip link set link dev macvlan1 type macvlan macaddr add 00:33:33:33:33:33
     ip link set link dev macvlan1 type macvlan macaddr add 00:44:44:44:44:44
    
    This allows clients with MAC addresses 00:11:11:11:11:11,
    00:22:22:22:22:22 to be part of only VLAN associated with macvlan0
    interface. Clients with MAC addresses 00:44:44:44:44:44 with only VLAN
    associated with macvlan1 interface. And client with MAC address
    00:33:33:33:33:33 to be associated with both VLANs.
    
    Based on work of Stefan Gula <steweg@gmail.com>
    
    v8: last version of Stefan Gula for Kernel 3.2.1
    v9: rework onto linux-next 2014-03-12 by Michael Braun
        add MACADDR_SET command, enable to configure mac for source mode
        while creating interface
    v10:
      - reduce indention level
      - rename source_list to source_entry
      - use aligned 64bit ether address
      - use hash_64 instead of addr[5]
    v11:
      - rebase for 3.14 / linux-next 20.04.2014
    v12
      - rebase for linux-next 2014-09-25
    Signed-off-by: default avatarMichael Braun <michael-dev@fami-braun.de>
    Signed-off-by: default avatarDavid S. Miller <davem@davemloft.net>
    79cf79ab
macvlan.c 38.8 KB