This patchset is to add VLAN support for NetworkManager, based on 6e92c1b60616(core: fix leaked return value of nm_netlink_index_to_iface()).
Requires libnl-3.2.1 FEATURE DESCRIPTION 1 example of VLAN ifcfg file We try to make it compitable with the format used by initscripts, and there is no need to change anything for ifcfg-eth9. VLAN=yes TYPE=vlan DEVICE=vlan43 PHYSDEV=eth9 REORDER_HDR=0 VLAN_FLAGS=GVRP,LOOSE_BINDING VLAN_INGRESS_PRIORITY_MAP=0:1,2:5 VLAN_EGRESS_PRIORITY_MAP=12:3,14:7 ONBOOT=yes BOOTPROTO=static IPADDR=192.168.43.149 NETMASK=255.255.255.0 2 NMDeviceVLAN NMDeviceVLAN inherits NMDevice and it implements functions of NMDeviceClass. And it also implements some functions for NMDeviceInterface. NetworkManager can parse VLAN ifcfg file and create corresponding VLAN device, and create NMDeviceVLAN objects for them. And it can also recognize existing VLAN devices created by vconfig, and will also create corresponding NMDeviceVLAN objects. 3 create and delete VLAN device We use libnl to create and delete VLAN device in kernel. 4 support both static IP configuration and DHCP for VLAN device TODO 1 set ingress and egress priority mapping for NMDeviceVLAN Now the VLAN parser can get ingress and egress priority mapping from the ifcfg file, and they are used to create VLAN device in kernel, but now NetworkManager doesn't use them when creating corresponding NMDeviceVLAN object. 2 activating dependency Before activating a VLAN device, we should make sure that the underlying physical ethernet device is up. For example, before activating eth0.100, we should make sure that eth0 is up. NetworkManager calls g_udev_client_query_by_subsystem() to get the device list, and then activates each devices on that device list. And luckily I found that the physical ethernet device is prior to VLAN device on that device list, so there is nothing to do to make sure the activating sequence between a VLAN device and its underlying physical ethernet device. Maybe we should not rely on the behavior of g_udev_client_query_by_subsystem(), and we should add special restriction to make sure that before activating a VLAN device, the underlying physical ethernet device is up. Thomas Graf (1): connection: Add nm_connection_is_type() Weiping Pan (5): VLAN: add ifcfg-vlan parser VLAN: create/delete kernel vlan device VLAN: add NMDeviceVLAN VLAN: create virtual kernel devices VLAN: create NMDeviceVLAN and activate it include/NetworkManager.h | 1 + libnm-util/Makefile.am | 2 + libnm-util/libnm-util.ver | 12 + libnm-util/nm-connection.c | 40 +++- libnm-util/nm-connection.h | 4 + libnm-util/nm-setting-vlan.c | 351 ++++++++++++++++++++ libnm-util/nm-setting-vlan.h | 93 +++++ src/Makefile.am | 2 + src/nm-device-vlan.c | 330 ++++++++++++++++++ src/nm-device-vlan.h | 59 ++++ src/nm-manager.c | 84 +++++- src/nm-system.c | 265 +++++++++++++++ src/nm-system.h | 4 + src/nm-udev-manager.c | 105 ++++++- src/settings/plugins/ifcfg-rh/common.h | 1 + src/settings/plugins/ifcfg-rh/reader.c | 143 ++++++++- .../network-scripts/ifcfg-test-vlan-interface | 11 +- 17 files changed, 1484 insertions(+), 23 deletions(-) create mode 100644 libnm-util/nm-setting-vlan.c create mode 100644 libnm-util/nm-setting-vlan.h create mode 100644 src/nm-device-vlan.c create mode 100644 src/nm-device-vlan.h -- 1.7.4.4 _______________________________________________ networkmanager-list mailing list [email protected] http://mail.gnome.org/mailman/listinfo/networkmanager-list
