diff --git a/proto/ospf/iface.c b/proto/ospf/iface.c index b90ab9fd..927b8da9 100644 --- a/proto/ospf/iface.c +++ b/proto/ospf/iface.c @@ -355,6 +355,9 @@ ospf_open_mc_socket(struct ospf_iface *ifa) u8 ospf_iface_clasify(struct iface * ifa) { + if (ifa->addr->flags & IA_UNNUMBERED) + return OSPF_IT_PTP; + if ((ifa->flags & (IF_MULTIACCESS | IF_MULTICAST)) == (IF_MULTIACCESS | IF_MULTICAST)) return OSPF_IT_BCAST; @@ -458,6 +461,16 @@ ospf_iface_new(struct proto_ospf *po, struct iface *iface, else ifa->type = ip->type; +#ifdef OSPFv2 + if ((ifa->type != OSPF_IT_PTP) && (ifa->type != OSPF_IT_VLINK) && + (ifa->iface->addr->flags & IA_UNNUMBERED)) + { + log(L_WARN "%s: Missing proper IP prefix on interface %s, forcing point-to-point mode", + p->name, iface->name); + ifa->type = OSPF_IT_PTP; + } +#endif + init_list(&ifa->neigh_list); init_list(&ifa->nbma_list);