summaryrefslogtreecommitdiff
path: root/zebra/interface.c
AgeCommit message (Collapse)Author
2016-05-06zebra: Fix show vrf and show run to use the zvrf_listDonald Sharp
The show vrf and show run commands were iterating over the vrf_list. Use the zvrf_list instead so that we can understand the differences between something configed -vs- created Ticket: CM-10139 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
2016-05-06zebra: Add code to add/remove statics from the ribDonald Sharp
On enable/disable of static routes add and remove them from the rib as appropriate. Ticket: CM-10139 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com>
2016-05-02BGP: Trigger IPv6 router advertisements upon config of unnumbered neighborvivek
Instead of turning on IPv6 RA on every interface as soon as it has an IPv6 address, only enable it upon configuration of BGP neighbor. When the BGP neighbor is deleted, signal that RAs can be turned off. To support this, introduce new message interaction between BGP and Zebra. Also, take appropriate actions in BGP upon interface add/del since the unnumbered neighbor could exist prior to interface creation etc. Only unnumbered IPv6 neighbors require RA, the /30 or /31 based neighbors don't. However, to keep the interaction simple and not have to deal with too many dynamic conditions (e.g., address deletes or neighbor change to/from 'v6only'), RAs on the interface are triggered upon any unnumbered neighbor configuration. BGP-triggered RAs will cause RAs to be initiated on the interface; however, if BGP asks that RAs be stopped (upon delete of unnumbered neighbor), RAs will continue to be exchanged if the operator has explicitly enabled. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-10640 Reviewed By: CCR-4589 Testing Done: Various manual and automated (refer to defect)
2016-04-27Add support for fast rexmit of RA on link transitions.Dinesh G Dutt
Ticket: CM-7076 Reviewed By: CCR-4568 Testing Done: To allow for faster convergence, modify transmission of IPv6 RA so that on link transitions(link up, change VRF, link add etc.), we transmit RA fast to ensure faster convergence with BGP Unnumbered. But we don't enable Fast RA if RA interval is in msecs as we've fixed the fast RA interval to be 1s. We retransmit RA 4 times, once each second on link events and when RA is first enabled.
2016-04-21Addition on hidden command "bfd multihop/singlehop" and "ptm-enable" per ↵radhika
interface command CM-10435 Issue: IBGP BFD sessions are created as multi-hop even though peer is single-hop away. This is causing an interop issue with ICOS. Root Cause: By design all IBGP peers are registered with BFD as multi-hop. Fix: • Changed the default behavior of always treating IBGP BFD sessions as mult-hop. shared_network variable is used to determine whether the IBGP peer is single hop or multi-hop away. The logic for determining whether EBGP peer is single hop or multi-hop has not been changed. • Since the default behavior has been changed, it will cause interop issues between 2.5 and 3.0 IBGP BFD sessions. A new hidden command “bfd multihop/singlehop” has been introduced to overcome the interop issues. dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd <2-255> Detect Multiplier <cr> dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd multihop dell-s6000-10(config-router)# no neighbor 30.0.2.6 bfd multihop dell-s6000-10(config-router)# dell-s6000-10(config-router)# neighbor 30.0.2.6 bfd multihop dell-s6000-10(config-router)# do show running-config ! router bgp 100 neighbor igroup peer-group neighbor igroup bfd 5 500 500 neighbor igroup bfd multihop neighbor 30.0.2.2 remote-as 100 neighbor 30.0.2.2 peer-group igroup neighbor 3101:abc:bcad::2 remote-as 100 neighbor 3101:abc:bcad::2 peer-group igroup neighbor 30.0.2.6 remote-as 200 neighbor 30.0.2.6 bfd multihop neighbor 3102:abc:bcad::6 remote-as 200 neighbor 3102:abc:bcad::6 bfd neighbor 3102:abc:bcad::6 ebgp-multihop 255 ! CM-10260 Issue: “Unable to connect to socket” message keeps getting logged when ptmd process doesn’t exist. Root Cause: BFD clients (bgpd, ospfd and ospf6d) during initialization try to register with BFD/PTM by default. This results in continuous logging If PTM does not exist since there is no max on number of retries. Fix: • Stop the retries to connect to PTM after max reconnect timer of 5 mins is reached. • Added zebra debug event wrapper to message logging to prevent it from showing by default. CM-4541 Issue: Addition of a new command "ptm-enable" or "no ptm-enable" per interface to enable/disable PTM link status checks for an interface. Fix: Currently there is only one ptm-enable global command that enables/disables PTM status updates for all interfaces. This new command will give the handle to individually stop interface from reacting on the PTM status updates. • by default interface uses the ptm-enable global configuration • "no ptm-enable" on an interface will disable PTM status updates from taking affect for that interface. This can bring the interface up if it was brought down due to PTM status update. • "ptm-enable" on an interface will cause the interface to fallback to the global ptm-enable configuration value and will bring the interface up or down based on the last stored PTM status update if global ptm is enabled. Ticket: CM-10435, CM-10260 and CM-4541 Signed-off-by: Radhika Mahankali Reviewed-by: Donald Sharp, Kanna Rajagopal
2016-04-14zebra: Refactor zebra_vrfDonald Sharp
Move zebra_vrf_XXX functionality into it's own file so that we can isolate a bit the api edges Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-14lib, zebra: Rework zebra_ns to be a bit more modularDonald Sharp
The struct zebra_ns was littered throughout the code base in a half-hazard fashion. Gather up the references and isolate the code a bit better. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-14lib, zebra: Rework vrf_add_updateDonald Sharp
The vrf_add_update function does not need to exist. Move it's constituent parts into the appropriate vrf_create/vrf_enable functionality as well as move the zebra_vrf_add_update() function call into zebra_vrf_enable() Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-14lib, zebra: Rearrange vrf_delete_updateDonald Sharp
vrf_delete_update really belongs in vrf.c broken up into it's appropriate places. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-12lib, zebra: Refactor vrf creation a bit moreDonald Sharp
Create the idea of a VRF_UNKNOWN, this is for a vrf where we don't yet have the vrf_id for it yet. Refactor the vrf_create code out of existence. We had two code paths vrf_create and vrf_get. We should use vrf_get to create the new vrf since XXX_get() creates the data structures now. Signed-off-by: Donald Sharp Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com>
2016-04-08Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga ↵Donald Sharp
into cmaster
2016-04-08lib, zebra: Rename ZEBRA_VRF_ACTIVEDonald Sharp
ZEBRA_VRF_ACTIVE is a poor name for when a vrf is actually active. Rename VRF_ACTIVE. Ticket: CM-10338 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Radhika Mahankali <radhika@cumulusnetworks.com>
2016-04-07zebra: count iface up/down events and keep last time of their occurrenceChristian Franke
It is quite useful to be able to assert whether specific interfaces have flapped or also to verify that specific interfaces have not flapped. By having counters for those events and storing the last time of their occurrence, this is made possible. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Acked-by: Jafar Al-Gharaibeh <jafar@atcorp.com>
2016-03-25zebra: add or delete router-id when interface moves vrfsDon Slice
When an interface changes which vrf it is part of, it needs to be added to the list of possible router-id choices in the new vrf and removed from the old vrf/default. Ticket: CM-9074 Signed-off-by: Don Slice Reviewed-by: Vivek Venkatraman
2016-03-23zebra: Replace vrf with zebra_vrf in a few placesDonald Sharp
We were incorrectly using vrf instead of zebra_vrf in a few spots. Ticket: CM-9412 Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2016-02-25Quagga: Implement VRF change semantics for an interfacevivek
Implement VRF change semantics for an interface to be invoked when an interface is moved from one VRF (e.g., the Default) to another. This includes the message definition as well as updating, deleting or adding the interface from clients, depending on their interest in the VRFs (old and new). Also handle replay of the addresses on the interface upon VRF change, if required. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Don Slice <dslice@cumulusnetworks.com> Ticket: CM-9527 Reviewed By: CCR-4174 Testing Done: Manual tests of various scenarios
2016-02-23Zebra: Zebra: Display interface info for NHT in a VRFvivek
Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Ticket: CM-9458 Reviewed By: CCR-4150 Testing Done: Manual
2016-02-18Zebra: Restrict automatic RA enable to relevant interfacesvivek
When enabling IPv6 Router Advertisements automatically based on the presence of IPv6 address on an interface, do it only for relevant interfaces. Note: This needs a configure option for completion. Ticket: CM-9358 Reviewed By: CCR-4116 Testing Done: Manual verification
2016-02-04zebra: display_vrf_name_on_interfaceDon Slice
Changed vrf output from vrf_id to vrf name in "show interface" Ticket: CM-9131 Reviewed By: sharpd Testing Done: Manual testing, see ticket
2016-02-04zebra: show_interface_name_vrf fixDon Slice
Ticket: CM-9110 Reviewed By: Testing Done: Manual testing, see ticket Aliased "show interface name swpxx" to "show interface name swpxx vrf all" to find the interface regarless of which vrf it resides in.
2016-02-01lib, zebra: The Bulk of the conversion over to NS and VRFDonald Sharp
Convert the rest of zebra over to use a Namespae and VRF. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2015-12-15zebra: Fix crash in connected.c due to RA changeDonald Sharp
Back out original null pointer fix targeted it was the wrong fix. Basically when a ip address is deleted the RA code was waiting till after the connected pointer was deleted to set the RA appropriately. Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com> Reviewed-by: Daniel Walton <dwalton@cumulusnetworks.com>
2015-12-14zebra: Crash upon disabling a linkDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-8514
2015-12-08Zebra: Schedule RIB processing based on trigger eventvivek
Currently, when RIB processing is initiated (i.e., by calling rib_update()), all routes are queued for processing. This is not desirable in all situations because, sometimes the protocol may have an alternate path. In addition, with NHT tracking nexthops, there are situations when NHT should be kicked off first and that can trigger subsequent RIB processing. This patch addresses this by introducing the notion of a trigger event. This is only for the situation when the entire RIB is walked. The current triggers - based on when rib_update() is invoked - are "interface change" and "route- map change". In the former case, only the relevant routes are walked and scheduled, in the latter case, currently all routes are scheduled for processing. Signed-off-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-7662 Reviewed By: CCR-3905 Note: The initial defect in this area was CM-7420. This was addressed in 2.5.4 with an interim change that only walked static routes upon interface down. The change was considered a bit risky to do for interface up etc. Also, this did not address scenarios like CM-7662. The current fix addresses CM-7662.
2015-12-07Enable IPv6 ND RA for interfaces that have an IPv6 addressDaniel Walton
Signed-off-by: Daniel Walton <dwalton@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com> Ticket: CM-7932
2015-11-20Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga ↵vivek
into cmaster
2015-11-20Zebra: Cleanup RIB debugsvivek
Some of the changes include: - ensuring IPv6 addresses are printed correctly - say 'updating' or 'deleting' etc. only when that is actually done - say 'queuing' or 'dequeuing' only when that is actually done - print useful info for 'detailed' debug - that now subsumes 'rib queue' - delete various useless logs - VRF-specific - print VRF id in RIB debugs prior to prefix (e.g., 4:37.1.1.0/28) Ticket: CM-8110 Reviewed By: CCR-3765 Testing Done: Manual testing (2.5-br)
2015-11-20Merge branch 'cmaster' of ssh://stash.cumulusnetworks.com:7999/quag/quagga ↵Donald Sharp
into cmaster
2015-11-20Quagga: Fixup decision about what an unnumbered interface isDonald Sharp
This Change modifies what zebra thinks is an unnumbered interface. If the interface is not a loopback and the prefixlength for the interface is 32 than consider this an unnumbered interface. Ticket: CM-8016 Reviewed by: CCR-3827 Testing: Full Regression Suites Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2015-11-20Quagga: Cleanup RTADV defineDonald Sharp
The RTADV define was not being set correctly or consistently. Make the code consistent with our HAVE_IPV6 define. If the user wants to explicitly turn it off then they should run --disable-rtadv from the configure cli Signed-off-by: Donald Sharp <sharpd@cumulusnetworks.com>
2015-10-29zebra: let FIB stand for its respective VRFFeng Lu
A new member "vrf_id" is added to "struct rib", reflecting the VRF which it belongs to. A new parameter "vrf_id" is added to the relative functions where need, except those: - which already have the parameter "vrf_id"; or - which have a parameter in type of "struct rib"; or - which have a parameter in type of "struct interface". All incoming routes are set to default VRF. In fact, all routes in FIB are kept in default VRF. And the logic is not changed. Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> [DL: conflicts fixed + compile warning fix] Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Conflicts: zebra/connected.c zebra/kernel_socket.c zebra/rib.h zebra/rt_netlink.c zebra/zebra_rib.c zebra/zserv.c Conflicts: zebra/connected.c zebra/interface.c zebra/kernel_socket.c zebra/rib.h zebra/rt_netlink.c zebra/rtread_getmsg.c zebra/zebra_rib.c zebra/zebra_vty.c zebra/zserv.c
2015-10-29zebra: show interfaces in a specified VRF or all VRFsFeng Lu
The following commands only show interfaces in the default VRF: show interface show interface IFNAME show interface description New options are introduced to show interfaces in a specified VRF: show interface vrf N show interface IFNAME vrf N show interface description vrf N or all VRFs: show interface vrf all show interface IFNAME vrf all show interface description vrf all Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2015-10-29lib, zebra, vtysh: configure an interface in non-default VRFFeng Lu
Introduce a new command "interface IFNAME vrf N" to configure an interface in the non-default VRF. Till now, only zebra uses this command. Other daemons will install the command when they support multiple VRFs. Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Conflicts: zebra/interface.c
2015-10-29*: call if_init()/if_terminate() from vrf_init()/vrf_terminate()Feng Lu
Later, an interface will belong to a specific VRF, and the interface initialization will be a part of the VRF initialization. So now call if_init() from vrf_init(), and if_terminate() from vrf_terminate(). Daemons have the according changes: - if if_init() was called or "iflist" was initialized, now call vrf_init() instead; - if if_terminate() was called or "iflist" was destroyed, now call vrf_terminate() instead. Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Conflicts: bgpd/bgp_main.c pimd/pim_iface.c pimd/pim_iface.h pimd/pim_main.c pimd/pimd.c
2015-10-29lib, zebra: add "vrf_id" into the "struct interface"Feng Lu
Later, an interface will belong to a specific VRF. Now we add a property "vrf_id" to the "struct interface", and keep it as the default value 0. This property is shown when displaying interfaces information. It is also added in some logs. This is just the preparation to move the interace list into the "struct vrf". The main logic is not changed. Signed-off-by: Feng Lu <lu.feng@6wind.com> Reviewed-by: Alain Ritoux <alain.ritoux@6wind.com> Signed-off-by: Nicolas Dichtel <nicolas.dichtel@6wind.com> Acked-by: Vincent JARDIN <vincent.jardin@6wind.com> Signed-off-by: David Lamparter <equinox@opensourcerouting.org> Conflicts: lib/if.c zebra/interface.c
2015-10-20Zebra: On a link down, schedule static routes only.vivek
Ticket: CM-7420 Reviewed By: Vivek, Donald Testing Done: UT, verification of the fix + ospf and bgp smoke On a link delete/down event, schedule only the prefixes which have a static RIB too. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Vivek Venkatraman <vivek@cumulusnetworks.com> Reviewed-by: Donald Sharp <sharpd@cumulusnetworks.com>
2015-10-09 Fix Quagga ptm status per interface to show more meaningful statusradhika
Ticket: CM-6812 Reviewed By: Donald Testing Done: Double commit of 2119c8fccda5f1497820009c6f1f82eda3c8d0f1 from 2.5br to master In Quagga, the ptm status is shown as pass for all the interfaces that PTM is not tracking. When ptm is enabled in Quagga all the interfaces are initialized as pass and changed to fail/pass when ptm cable check updates are received. For all the interfaces for which no status was received from PTM remain at pass status. Interface show in quagga indicates wrong status and it should be n/a for all the untracked interfaces. To fix the problem introduced a third state “unknown” and this is default ptm status for all the interfaces. The ptm status is updated accordingly to pass/fail when the updates are received from PTM. Also, reset all interface ptm status to unknown when the connection with ptm is lost and the status gets updated when the connection with PTM is re-established.
2015-07-25Fixup of warnings in the codeDonald Sharp
Ticket: None Reviewed by: Trivial Testing: A bunch of warnings have crept in to the code base. This fixes the issue
2015-07-22ptm-integration.patchDonald Sharp
Integrates Prescriptive Topology Module(ptm) into quagga. If this module is enabled, link ups are notified only after the link is verified as being connected to the neighbor specified. The neighbor specification and checking is done by the ptm daemon. <This is a recommit of this patch because it was changed in situ>
2015-06-12ipv6_ll_address_to_mac() fails to correctly convert ↵Donald Sharp
fe80::a8aa:aaff:feaa:aaf8 to AA:AA:AA:AA:AA:F8
2015-06-12This patch changes BGP from only listening mode for BFD status updates to ↵Donald Sharp
interactive mode of dynamically registering/deregistering BFD enabled peers with PTM/BFD through zebra. Peer is registered with BFD when it goes into established state and de-registers when it goes out of establish state. This patch also adds BFD multihop support for BGP. Whether a peer is multi-hop or single hop is determined internally. All IGP peers are considered as multi-hop peers. EBGP peers are considered as single hop unless configured as multi-hop. BGP BFD command enhancement to configure BFD parameters (detect multiplier, min rx and min tx). router bgp <as-number> neighbor <name/ip-address> bfd <detect mult> <min rx> <min tx> Signed-off-by: Radhika Mahankali <radhika@cumulusnetworks.com> Reviewed-by: Dinesh G Dutt <ddutt@cumulusnetworks.com> Reviewed-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Kanna Rajagopal <kanna@cumulusnetworks.com>
2015-06-12When an interface goes down, any neigbors learnt on that interfaceDonald Sharp
using IPv6 Router Advertisements (RAs) must be deleted. When an interface comes up and neighbors are learnt on that interface, the BGP FSM for any interface peer must be started only if a valid local address exists; the local address may come up later after IPv6 Duplicate Address Detection.
2015-06-11(no commit message)Donald Sharp
2015-05-19Unnumbered interface support.Donald Sharp
2015-05-19Block martian address configuration on an interface and also block fromDonald Sharp
getting installed into the zebra tables.
2015-05-19This patch adds support for a new BFD session down message from zebra toDonald Sharp
protocols. BGP and OSPF are integrated to respond this BFD session down message originated in Zebra via ptmd. BGP and OSPF now have a bfd command, which tells OSPF/BGP to respond to the BFD session down message. OSPF: interface <> ip ospf bfd BGP: router bgp <> neighbor <> bfd Please note that these commands don't enable BFD as a protocol. BFD configuration and paramter tuning are via BFD applicable UI. Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Shrijeet Mukherjee <shm@cumulusnetworks.com>
2015-05-19ptm-integration.patchDonald Sharp
Integrates Prescriptive Topology Module(ptm) into quagga. If this module is enabled, link ups are notified only after the link is verified as being connected to the neighbor specified. The neighbor specification and checking is done by the ptm daemon.
2015-05-19'neighbor <if-name> interface' config support in BGP including RA/Zebra changes.Donald Sharp
Signed-off-by: Vipin Kumar <vipin@cumulusnetworks.com> Reviewed-by: Pradosh Mohapatra <pmohapat@cumulusnetworks.com> Dinesh Dutt <ddutt@cumulusnetworks.com>
2014-06-04*: nuke ^L (page feed)David Lamparter
Quagga sources have inherited a slew of Page Feed (^L, \xC) characters from ancient history. Among other things, these break patchwork's XML-RPC API because \xC is not a valid character in XML documents. Nuke them from high orbit. Patches can be adapted simply by: sed -e 's%^L%%' -i filename.patch (you can type page feeds in some environments with Ctrl-V Ctrl-L) Signed-off-by: David Lamparter <equinox@opensourcerouting.org>
2013-09-19zebra: improve interface shutdown behaviourChristian Franke
Linux removes IPv6 addresses when the interface is set down. Those addresses need to be readded when the interface is set up again. Also, an interface should not be reactivated from shutdown by configuring an ip address. Finally, remove the three-state logic for the shutdown setting as its sole current use may be mild confusion. Signed-off-by: Christian Franke <chris@opensourcerouting.org> Signed-off-by: David Lamparter <equinox@opensourcerouting.org>