Support loopback/dummy addresses.
This commit is contained in:
parent
e0a62ad0f8
commit
691057f033
2 changed files with 15 additions and 4 deletions
|
@ -453,6 +453,10 @@ ospf_iface_new(struct proto_ospf *po, struct iface *iface, struct ifa *addr,
|
||||||
else
|
else
|
||||||
ifa->type = ip->type;
|
ifa->type = ip->type;
|
||||||
|
|
||||||
|
/* a loopback/dummy address */
|
||||||
|
if ((addr->pxlen == MAX_PREFIX_LENGTH) && ipa_zero(addr->opposite))
|
||||||
|
ifa->stub = 1;
|
||||||
|
|
||||||
#ifdef OSPFv2
|
#ifdef OSPFv2
|
||||||
if ((ifa->type != OSPF_IT_PTP) && (ifa->type != OSPF_IT_VLINK) &&
|
if ((ifa->type != OSPF_IT_PTP) && (ifa->type != OSPF_IT_VLINK) &&
|
||||||
(addr->flags & IA_UNNUMBERED))
|
(addr->flags & IA_UNNUMBERED))
|
||||||
|
|
|
@ -381,11 +381,18 @@ nl_parse_addr(struct nlmsghdr *h)
|
||||||
new = 0;
|
new = 0;
|
||||||
}
|
}
|
||||||
if (i->ifa_prefixlen == BITS_PER_IP_ADDRESS)
|
if (i->ifa_prefixlen == BITS_PER_IP_ADDRESS)
|
||||||
|
{
|
||||||
|
ip_addr addr;
|
||||||
|
memcpy(&addr, RTA_DATA(a[IFA_ADDRESS]), sizeof(addr));
|
||||||
|
ipa_ntoh(addr);
|
||||||
|
ifa.prefix = ifa.brd = addr;
|
||||||
|
|
||||||
|
/* It is either a peer address, or loopback/dummy address */
|
||||||
|
if (!ipa_equal(ifa.ip, addr))
|
||||||
{
|
{
|
||||||
ifa.flags |= IA_UNNUMBERED;
|
ifa.flags |= IA_UNNUMBERED;
|
||||||
memcpy(&ifa.opposite, RTA_DATA(a[IFA_ADDRESS]), sizeof(ifa.opposite));
|
ifa.opposite = addr;
|
||||||
ipa_ntoh(ifa.opposite);
|
}
|
||||||
ifa.prefix = ifa.brd = ifa.opposite;
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue