mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-14 18:01:54 +00:00
[interface configuration] Try to avoid losing address info after shutdown.
2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu> * if.h: (struct connected) Document the meaning of the ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags. * connected.c: (connected_withdraw) Do not delete the connected address if the ZEBRA_IFC_CONFIGURED flag is set. (connected_add_ipv4,connected_add_ipv6) Before calling connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag on the superseded connected structure.
This commit is contained in:
parent
0f38dc4d47
commit
9c37851eac
@ -1,3 +1,8 @@
|
||||
2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||
|
||||
* if.h: (struct connected) Document the meaning of the
|
||||
ZEBRA_IFC_REAL and ZEBRA_IFC_CONFIGURED flags.
|
||||
|
||||
2006-05-15 Paul Jakma <paul.jakma@sun.com>
|
||||
|
||||
* log.c: (general) Generalise struct zebra_route_desc into
|
||||
|
6
lib/if.h
6
lib/if.h
@ -145,6 +145,12 @@ struct connected
|
||||
u_char conf;
|
||||
#define ZEBRA_IFC_REAL (1 << 0)
|
||||
#define ZEBRA_IFC_CONFIGURED (1 << 1)
|
||||
/*
|
||||
The ZEBRA_IFC_REAL flag should be set if and only if this address
|
||||
exists in the kernel.
|
||||
The ZEBRA_IFC_CONFIGURED flag should be set if and only if this address
|
||||
was configured by the user from inside quagga.
|
||||
*/
|
||||
|
||||
/* Flags for connected address. */
|
||||
u_char flags;
|
||||
|
@ -1,3 +1,11 @@
|
||||
2006-05-21 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||
|
||||
* connected.c: (connected_withdraw) Do not delete the connected
|
||||
address if the ZEBRA_IFC_CONFIGURED flag is set.
|
||||
(connected_add_ipv4,connected_add_ipv6) Before calling
|
||||
connected_withdraw, unset the ZEBRA_IFC_CONFIGURED flag
|
||||
on the superseded connected structure.
|
||||
|
||||
2006-05-19 Andrew J. Schorr <ajschorr@alumni.princeton.edu>
|
||||
|
||||
* connected.c: (connected_add_ipv4,connected_add_ipv6) If the
|
||||
|
@ -60,8 +60,11 @@ connected_withdraw (struct connected *ifc)
|
||||
UNSET_FLAG (ifc->conf, ZEBRA_IFC_REAL);
|
||||
}
|
||||
|
||||
listnode_delete (ifc->ifp->connected, ifc);
|
||||
connected_free (ifc);
|
||||
if (!CHECK_FLAG (ifc->conf, ZEBRA_IFC_CONFIGURED))
|
||||
{
|
||||
listnode_delete (ifc->ifp->connected, ifc);
|
||||
connected_free (ifc);
|
||||
}
|
||||
}
|
||||
|
||||
static void
|
||||
@ -227,7 +230,10 @@ connected_add_ipv4 (struct interface *ifp, int flags, struct in_addr *addr,
|
||||
if ((current = connected_check (ifp, (struct prefix *) ifc->address)))
|
||||
{
|
||||
if (CHECK_FLAG(current->conf, ZEBRA_IFC_CONFIGURED))
|
||||
SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
|
||||
{
|
||||
SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
|
||||
UNSET_FLAG(current->conf, ZEBRA_IFC_CONFIGURED);
|
||||
}
|
||||
connected_withdraw (current); /* implicit withdraw - freebsd does this */
|
||||
}
|
||||
|
||||
@ -370,7 +376,10 @@ connected_add_ipv6 (struct interface *ifp, struct in6_addr *addr,
|
||||
if ((current = connected_check (ifp, (struct prefix *) ifc->address)))
|
||||
{
|
||||
if (CHECK_FLAG(current->conf, ZEBRA_IFC_CONFIGURED))
|
||||
SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
|
||||
{
|
||||
SET_FLAG(ifc->conf, ZEBRA_IFC_CONFIGURED);
|
||||
UNSET_FLAG(current->conf, ZEBRA_IFC_CONFIGURED);
|
||||
}
|
||||
connected_withdraw (current); /* implicit update of existing address */
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user