On 10.5.2013. 9:46, Stuart Henderson wrote: > Has anyone tried this against other routers yet? >
Hi, sorry for delay, we are in the middle of the network migration from cisco to extreme and i thought when everything calms down to test it with cisco and extreme equipment. I'm planning to test it next week. > In gmane.os.openbsd.misc, I wrote: >> On 2013-04-13, Hrvoje Popovski <hrv...@srce.hr> wrote: >>> On 13.4.2013. 17:29, Stuart Henderson wrote: >>>> ospfd doesn't support point-to-point on ethernet interfaces, you will >>>> need to remove this from cisco config for now. >>>> >>>> might not be too hard to add though.. (as in, I have a diff which builds, >>>> but I have no idea if it works ;-) >>>> >>> >>> could you post that diff, i'm willing to test it >>> >>> >> >> naive diff, and tested on a hack box only: if you run it in >> production and it eats your network, don't blame me. ;-) >> >> (for anyone wondering if this is useful: if you are sure you'll >> only have the 2 routers on a segment, it avoids waiting for $dead-time >> before bringing up adjacencies). >> >> >> >> Index: ospfd/interface.c >> =================================================================== >> RCS file: /cvs/src/usr.sbin/ospfd/interface.c,v >> retrieving revision 1.75 >> diff -u -p -r1.75 interface.c >> --- ospfd/interface.c 14 May 2012 10:17:21 -0000 1.75 >> +++ ospfd/interface.c 13 Apr 2013 20:18:55 -0000 >> @@ -348,6 +348,10 @@ if_act_start(struct iface *iface) >> iface->name); >> iface->passive = 1; >> } >> + if (iface->pointopoint) { >> + log_warnx("if_act_start: interface %s configured as >> point-to-point", iface->name); >> + iface->type = IF_TYPE_POINTOPOINT; >> + } >> >> gettimeofday(&now, NULL); >> iface->uptime = now.tv_sec; >> Index: ospfd/ospfd.c >> =================================================================== >> RCS file: /cvs/src/usr.sbin/ospfd/ospfd.c,v >> retrieving revision 1.79 >> diff -u -p -r1.79 ospfd.c >> --- ospfd/ospfd.c 22 Mar 2013 11:29:01 -0000 1.79 >> +++ ospfd/ospfd.c 13 Apr 2013 20:18:55 -0000 >> @@ -813,6 +813,7 @@ merge_interfaces(struct area *a, struct >> * - new interfaces (easy) >> * - deleted interfaces (needs to be done via fsm?) >> * - changing passive (painful?) >> + * - changing point-to-point (painful?) >> */ >> for (i = LIST_FIRST(&a->iface_list); i != NULL; i = ni) { >> ni = LIST_NEXT(i, entry); >> @@ -872,6 +873,15 @@ merge_interfaces(struct area *a, struct >> if (ospfd_process == PROC_OSPF_ENGINE) >> if_fsm(i, IF_EVT_DOWN); >> i->passive = xi->passive; >> + if (ospfd_process == PROC_OSPF_ENGINE) >> + if_fsm(i, IF_EVT_UP); >> + } >> + >> + if (i->pointopoint != xi->pointopoint) { >> + /* need to restart interface to cope with this change?? >> */ >> + if (ospfd_process == PROC_OSPF_ENGINE) >> + if_fsm(i, IF_EVT_DOWN); >> + i->pointopoint = xi->pointopoint; >> if (ospfd_process == PROC_OSPF_ENGINE) >> if_fsm(i, IF_EVT_UP); >> } >> Index: ospfd/ospfd.h >> =================================================================== >> RCS file: /cvs/src/usr.sbin/ospfd/ospfd.h,v >> retrieving revision 1.91 >> diff -u -p -r1.91 ospfd.h >> --- ospfd/ospfd.h 17 Jan 2013 10:07:56 -0000 1.91 >> +++ ospfd/ospfd.h 13 Apr 2013 20:18:55 -0000 >> @@ -350,6 +350,7 @@ struct iface { >> u_int8_t linkstate; >> u_int8_t priority; >> u_int8_t passive; >> + u_int8_t pointopoint; >> }; >> >> struct ifaddrdel { >> Index: ospfd/parse.y >> =================================================================== >> RCS file: /cvs/src/usr.sbin/ospfd/parse.y,v >> retrieving revision 1.74 >> diff -u -p -r1.74 parse.y >> --- ospfd/parse.y 6 Mar 2013 21:36:57 -0000 1.74 >> +++ ospfd/parse.y 13 Apr 2013 20:18:55 -0000 >> @@ -120,7 +120,7 @@ typedef struct { >> %token AREA INTERFACE ROUTERID FIBUPDATE REDISTRIBUTE RTLABEL RDOMAIN >> %token RFC1583COMPAT STUB ROUTER SPFDELAY SPFHOLDTIME EXTTAG >> %token AUTHKEY AUTHTYPE AUTHMD AUTHMDKEYID >> -%token METRIC PASSIVE >> +%token METRIC PASSIVE POINTOPOINT >> %token HELLOINTERVAL FASTHELLOINTERVAL TRANSMITDELAY >> %token RETRANSMITINTERVAL ROUTERDEADTIME ROUTERPRIORITY >> %token SET TYPE >> @@ -664,6 +664,7 @@ interfaceopts_l : interfaceopts_l interf >> ; >> >> interfaceoptsl : PASSIVE { iface->passive = 1; } >> + | POINTOPOINT { iface->pointopoint = 1; } >> | DEMOTE STRING { >> if (strlcpy(iface->demote_group, $2, >> sizeof(iface->demote_group)) >= >> @@ -734,6 +735,7 @@ lookup(char *s) >> {"msec", MSEC}, >> {"no", NO}, >> {"passive", PASSIVE}, >> + {"point-to-point", POINTOPOINT}, >> {"rdomain", RDOMAIN}, >> {"redistribute", REDISTRIBUTE}, >> {"retransmit-interval", RETRANSMITINTERVAL}, >> Index: ospfd/printconf.c >> =================================================================== >> RCS file: /cvs/src/usr.sbin/ospfd/printconf.c,v >> retrieving revision 1.16 >> diff -u -p -r1.16 printconf.c >> --- ospfd/printconf.c 6 Mar 2013 15:43:23 -0000 1.16 >> +++ ospfd/printconf.c 13 Apr 2013 20:18:55 -0000 >> @@ -119,6 +119,8 @@ print_iface(struct iface *iface) >> >> if (*iface->demote_group) >> printf("\t\tdemote %s\n", iface->demote_group); >> + if (iface->pointopoint) >> + printf("\t\tpoint-to-point\n"); >> if (iface->passive) >> printf("\t\tpassive\n"); >> else {