diff --git a/lib/linux/netlink/route/link_handler.rb b/lib/linux/netlink/route/link_handler.rb index 19fa07c..0b90f2b 100644 --- a/lib/linux/netlink/route/link_handler.rb +++ b/lib/linux/netlink/route/link_handler.rb @@ -122,6 +122,7 @@ module Netlink :unpack => lambda { |str,obj| VlanFlags.parse(str) } rtattr :egress_qos, IFLA_VLAN_EGRESS_QOS rtattr :ingress_qos, IFLA_VLAN_INGRESS_QOS + rtattr :protocol, IFLA_VLAN_PROTOCOL, :ushort end module Route diff --git a/lib/linux/netlink/route/vlan_handler.rb b/lib/linux/netlink/route/vlan_handler.rb index f3105f3..3b8e4ec 100644 --- a/lib/linux/netlink/route/vlan_handler.rb +++ b/lib/linux/netlink/route/vlan_handler.rb @@ -8,12 +8,12 @@ module Netlink def clear_cache # No cache end - + def list(filter={}, &blk) @rtsocket.link.list(filter.merge(:kind=>"vlan")) end alias :each :list - + # Higher-level API to manipulate VLAN interface. # nl.vlans.add( # :link=>"lo", @@ -24,15 +24,15 @@ module Netlink def add(opt) @rtsocket.link.add(vlan_options(opt)) end - + def change(opt) @rtsocket.link.change(vlan_options(opt)) end - + def replace(opt) @rtsocket.link.replace(vlan_options(opt)) end - + # Delete vlan given :link and :vlan_id. If you want to delete # by :index then call link.delete instead. def delete(opt) @@ -59,6 +59,7 @@ module Netlink end li.data.egress_qos = opt.delete(:egress_qos) if opt.has_key?(:egress_qos) li.data.ingress_qos = opt.delete(:ingress_qos) if opt.has_key?(:ingress_qos) + li.data.protocol = opt.delete(:protocol) if opt.has_key?(:protocol) opt end end