On Thu, Jul 04, 2019 at 09:20:59AM +0300, Kapetanakis Giannis wrote: > Hi, > > This does not work for me with IOS. > > neighbor is full, > rib is ok > fib does not list the routes to IOS and > routing table is not updated on BSD > > On IOS I do have the loopback route the BSD is announcing.
Thank you for testing! Can you send me your ospfd.conf, the output from ospfd -dv and the output from tcpdump showing the ospf traffic? > On 24/06/2019 01:33, Remi Locherer wrote: > > Diff below adds to ospfd point to point support for Ethernet interfaces. > > I successfully tested this against Junos and FastIron. > > > > I first made the key word in the config "point-to-point". But then I > > changed to "type p2p". The later would allow for "type nbma" or "type p2mp" > > should we implement these types. > > > > On Junos it looks like this: > > > > area 0.0.0.0 { > > interface ge-0/0/1.0 { > > interface-type p2p; > > } > > } > > > > On FastIron it's similar to IOS: > > > > interface ethernet 1/2/1 > > ip address 10.10.10.5 255.255.255.0 > > ip ospf area 0 > > ip ospf network point-to-point > > > > Comments, test reports and OKs are welcome. > > > > Remi > > > > > > Index: interface.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/interface.c,v > > retrieving revision 1.82 > > diff -u -p -r1.82 interface.c > > --- interface.c 11 Mar 2018 13:16:49 -0000 1.82 > > +++ interface.c 23 Jun 2019 11:27:57 -0000 > > @@ -190,6 +190,8 @@ if_new(struct kif *kif, struct kif_addr > > if (kif->flags & IFF_BROADCAST && > > kif->flags & IFF_MULTICAST) > > iface->type = IF_TYPE_BROADCAST; > > + if (iface->p2p) > > + iface->type = IF_TYPE_POINTOPOINT; > > if (kif->flags & IFF_LOOPBACK) { > > iface->type = IF_TYPE_POINTOPOINT; > > iface->passive = 1; > > @@ -351,6 +353,9 @@ if_act_start(struct iface *iface) > > orig_rtr_lsa(iface->area); > > return (0); > > } > > + > > + if (iface->p2p) > > + iface->type = IF_TYPE_POINTOPOINT; > > > > switch (iface->type) { > > case IF_TYPE_POINTOPOINT: > > Index: ospfd.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/ospfd.c,v > > retrieving revision 1.108 > > diff -u -p -r1.108 ospfd.c > > --- ospfd.c 16 May 2019 05:49:22 -0000 1.108 > > +++ ospfd.c 23 Jun 2019 21:06:44 -0000 > > @@ -911,6 +911,22 @@ merge_interfaces(struct area *a, struct > > if_fsm(i, IF_EVT_UP); > > } > > > > + if (i->p2p != xi->p2p) { > > + /* re-add interface to enable or disable DR election */ > > + if (ospfd_process == PROC_OSPF_ENGINE) > > + if_fsm(i, IF_EVT_DOWN); > > + else if (ospfd_process == PROC_RDE_ENGINE) > > + rde_nbr_iface_del(i); > > + LIST_REMOVE(i, entry); > > + if_del(i); > > + LIST_REMOVE(xi, entry); > > + LIST_INSERT_HEAD(&a->iface_list, xi, entry); > > + xi->area = a; > > + if (ospfd_process == PROC_OSPF_ENGINE) > > + xi->state = IF_STA_NEW; > > + continue; > > + } > > + > > strlcpy(i->dependon, xi->dependon, > > sizeof(i->dependon)); > > i->depend_ok = xi->depend_ok; > > Index: ospfd.conf.5 > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/ospfd.conf.5,v > > retrieving revision 1.57 > > diff -u -p -r1.57 ospfd.conf.5 > > --- ospfd.conf.5 10 Jun 2019 06:07:15 -0000 1.57 > > +++ ospfd.conf.5 23 Jun 2019 22:10:32 -0000 > > @@ -419,6 +419,9 @@ Router. > > .It Ic transmit-delay Ar seconds > > Set the transmit delay. > > The default value is 1; valid range is 1\-3600 seconds. > > +.It Ic type p2p > > +Set the interface type to point to point. > > +This disables the election of a DR and BDR for the given interface. > > .El > > .Sh FILES > > .Bl -tag -width "/etc/ospfd.conf" -compact > > Index: ospfd.h > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/ospfd.h,v > > retrieving revision 1.104 > > diff -u -p -r1.104 ospfd.h > > --- ospfd.h 16 May 2019 05:49:22 -0000 1.104 > > +++ ospfd.h 23 Jun 2019 11:28:24 -0000 > > @@ -363,6 +363,7 @@ struct iface { > > u_int8_t linkstate; > > u_int8_t priority; > > u_int8_t passive; > > + u_int8_t p2p; > > }; > > > > struct ifaddrchange { > > Index: parse.y > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/parse.y,v > > retrieving revision 1.98 > > diff -u -p -r1.98 parse.y > > --- parse.y 7 Jun 2019 04:57:45 -0000 1.98 > > +++ parse.y 23 Jun 2019 22:04:22 -0000 > > @@ -129,7 +129,7 @@ typedef struct { > > %token AREA INTERFACE ROUTERID FIBPRIORITY FIBUPDATE REDISTRIBUTE > > RTLABEL > > %token RDOMAIN RFC1583COMPAT STUB ROUTER SPFDELAY SPFHOLDTIME EXTTAG > > %token AUTHKEY AUTHTYPE AUTHMD AUTHMDKEYID > > -%token METRIC PASSIVE > > +%token METRIC P2P PASSIVE > > %token HELLOINTERVAL FASTHELLOINTERVAL TRANSMITDELAY > > %token RETRANSMITINTERVAL ROUTERDEADTIME ROUTERPRIORITY > > %token SET TYPE > > @@ -743,6 +743,7 @@ interfaceopts_l : interfaceopts_l interf > > ; > > > > interfaceoptsl : PASSIVE { iface->passive = 1; } > > + | TYPE P2P { iface->p2p = 1; } > > | DEMOTE STRING { > > if (strlcpy(iface->demote_group, $2, > > sizeof(iface->demote_group)) >= > > @@ -833,6 +834,7 @@ lookup(char *s) > > {"msec", MSEC}, > > {"no", NO}, > > {"on", ON}, > > + {"p2p", P2P}, > > {"passive", PASSIVE}, > > {"rdomain", RDOMAIN}, > > {"redistribute", REDISTRIBUTE}, > > Index: printconf.c > > =================================================================== > > RCS file: /cvs/src/usr.sbin/ospfd/printconf.c,v > > retrieving revision 1.20 > > diff -u -p -r1.20 printconf.c > > --- printconf.c 28 Dec 2018 19:25:10 -0000 1.20 > > +++ printconf.c 23 Jun 2019 22:05:55 -0000 > > @@ -149,6 +149,9 @@ print_iface(struct iface *iface) > > printf("\t\trouter-priority %d\n", iface->priority); > > printf("\t\ttransmit-delay %d\n", iface->transmit_delay); > > > > + if (iface->p2p) > > + printf("\t\ttype p2p\n"); > > + > > printf("\t\tauth-type %s\n", if_auth_name(iface->auth_type)); > > switch (iface->auth_type) { > > case AUTH_TYPE_NONE: > > > > >