]> git.proxmox.com Git - mirror_frr.git/blobdiff - lib/if.c
Merge pull request #7220 from idryzhov/fix-clear-isis
[mirror_frr.git] / lib / if.c
index d8392708e14083b69de1d536ca5171075b54a1ea..304840e5b9ee4710e982d87502c4d03eff6e5bb2 100644 (file)
--- a/lib/if.c
+++ b/lib/if.c
@@ -188,7 +188,9 @@ void if_destroy_via_zapi(struct interface *ifp)
        if (ifp_master.destroy_hook)
                (*ifp_master.destroy_hook)(ifp);
 
+       ifp->oldifindex = ifp->ifindex;
        if_set_index(ifp, IFINDEX_INTERNAL);
+
        if (!ifp->configured)
                if_delete(&ifp);
 }
@@ -800,44 +802,6 @@ void if_dump_all(void)
                        if_dump(ifp);
 }
 
-#ifdef SUNOS_5
-/* Need to handle upgrade from SUNWzebra to Quagga. SUNWzebra created
- * a seperate struct interface for each logical interface, so config
- * file may be full of 'interface fooX:Y'. Solaris however does not
- * expose logical interfaces via PF_ROUTE, so trying to track logical
- * interfaces can be fruitless, for that reason Quagga only tracks
- * the primary IP interface.
- *
- * We try accomodate SUNWzebra by:
- * - looking up the interface name, to see whether it exists, if so
- *   its useable
- *   - for protocol daemons, this could only because zebra told us of
- *     the interface
- *   - for zebra, only because it learnt from kernel
- * - if not:
- *   - search the name to see if it contains a sub-ipif / logical interface
- *     seperator, the ':' char. If it does:
- *     - text up to that char must be the primary name - get that name.
- *     if not:
- *     - no idea, just get the name in its entirety.
- */
-static struct interface *if_sunwzebra_get(const char *name, vrf_id_t vrf_id)
-{
-       struct interface *ifp;
-       char *cp;
-
-       if ((ifp = if_lookup_by_name(name, vrf_id)) != NULL)
-               return ifp;
-
-       /* hunt the primary interface name... */
-       cp = strchr(name, ':');
-       if (cp)
-               *cp = '\0';
-
-       return if_get_by_name(name, vrf_id);
-}
-#endif /* SUNOS_5 */
-
 #if 0
 /* For debug purpose. */
 DEFUN (show_address,
@@ -1552,11 +1516,7 @@ static int lib_interface_create(struct nb_cb_create_args *args)
        case NB_EV_APPLY:
                vrf = vrf_lookup_by_name(vrfname);
                assert(vrf);
-#ifdef SUNOS_5
-               ifp = if_sunwzebra_get(ifname, vrf->vrf_id);
-#else
                ifp = if_get_by_name(ifname, vrf->vrf_id);
-#endif /* SUNOS_5 */
 
                ifp->configured = true;
                nb_running_set_entry(args->dnode, ifp);