Commit 691057f0 authored by Ondřej Zajíček's avatar Ondřej Zajíček

Support loopback/dummy addresses.

parent e0a62ad0
......@@ -453,6 +453,10 @@ ospf_iface_new(struct proto_ospf *po, struct iface *iface, struct ifa *addr,
else
ifa->type = ip->type;
/* a loopback/dummy address */
if ((addr->pxlen == MAX_PREFIX_LENGTH) && ipa_zero(addr->opposite))
ifa->stub = 1;
#ifdef OSPFv2
if ((ifa->type != OSPF_IT_PTP) && (ifa->type != OSPF_IT_VLINK) &&
(addr->flags & IA_UNNUMBERED))
......
......@@ -382,10 +382,17 @@ nl_parse_addr(struct nlmsghdr *h)
}
if (i->ifa_prefixlen == BITS_PER_IP_ADDRESS)
{
ifa.flags |= IA_UNNUMBERED;
memcpy(&ifa.opposite, RTA_DATA(a[IFA_ADDRESS]), sizeof(ifa.opposite));
ipa_ntoh(ifa.opposite);
ifa.prefix = ifa.brd = ifa.opposite;
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.opposite = addr;
}
}
else
{
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment