mirror of
https://github.com/CumulusNetworks/ifupdown2.git
synced 2024-05-06 15:54:50 +00:00
nlmanager: add support for ip link set master/nomaster
Reviewed By: Roopa, Daniel, Scott E, Nikhil G, Dave O Testing Done: ifupdown2 smokes Signed-off-by: Julien Fortin <julien@cumulusnetworks.com>
This commit is contained in:
@ -764,6 +764,31 @@ class NetlinkManager(object):
|
|||||||
link.build_message(self.sequence.next(), self.pid)
|
link.build_message(self.sequence.next(), self.pid)
|
||||||
return self.tx_nlpacket_get_response(link)
|
return self.tx_nlpacket_get_response(link)
|
||||||
|
|
||||||
|
def link_set_master(self, ifname, master_ifindex=0, state=None):
|
||||||
|
"""
|
||||||
|
ip link set %ifname master %master_ifindex %state
|
||||||
|
use master_ifindex=0 for nomaster
|
||||||
|
"""
|
||||||
|
if state == 'up':
|
||||||
|
if_change = Link.IFF_UP
|
||||||
|
if_flags = Link.IFF_UP
|
||||||
|
elif state == 'down':
|
||||||
|
if_change = Link.IFF_UP
|
||||||
|
if_flags = 0
|
||||||
|
else:
|
||||||
|
if_change = 0
|
||||||
|
if_flags = 0
|
||||||
|
|
||||||
|
debug = RTM_NEWLINK in self.debug
|
||||||
|
|
||||||
|
link = Link(RTM_NEWLINK, debug, use_color=self.use_color)
|
||||||
|
link.flags = NLM_F_REQUEST | NLM_F_ACK
|
||||||
|
link.body = pack('=BxxxiLL', socket.AF_UNSPEC, 0, if_flags, if_change)
|
||||||
|
link.add_attribute(Link.IFLA_IFNAME, ifname)
|
||||||
|
link.add_attribute(Link.IFLA_MASTER, master_ifindex)
|
||||||
|
link.build_message(self.sequence.next(), self.pid)
|
||||||
|
return self.tx_nlpacket_get_response(link)
|
||||||
|
|
||||||
# =========
|
# =========
|
||||||
# Neighbors
|
# Neighbors
|
||||||
# =========
|
# =========
|
||||||
|
Reference in New Issue
Block a user