Remi Locherer <remi.loche...@relo.ch> writes: > Hi,
Hi, > ospf6d does not like beeing reloaded and exits. > > Below an example on -current running in VMM. I first noticed it > on an OpenBSD 6.0 amd64 router on real hardware. The issue has already been reported, it's not really new. The code that handles interfaces and addresses is different in ospfd and ospf6d. I recently tried to sync that code but there were a few differences that made it more difficult than expected. > Remi > > > > r1# ifconfig -A > lo0: flags=8049<UP,LOOPBACK,RUNNING,MULTICAST> mtu 32768 > index 3 priority 0 llprio 3 > groups: lo > inet6 ::1 prefixlen 128 > inet6 fe80::1%lo0 prefixlen 64 scopeid 0x3 > inet 127.0.0.1 netmask 0xff000000 > vio0: flags=8b43<UP,BROADCAST,RUNNING,PROMISC,ALLMULTI,SIMPLEX,MULTICAST> mtu > 1500 > lladdr fe:e1:bb:d1:10:e1 > index 1 priority 0 llprio 3 > groups: egress > media: Ethernet autoselect > status: active > inet 192.168.250.101 netmask 0xffffff00 broadcast 192.168.250.255 > inet6 fe80::fce1:bbff:fed1:10e1%vio0 prefixlen 64 scopeid 0x1 > inet6 2001:db8::101 prefixlen 64 > enc0: flags=0<> > index 2 priority 0 llprio 3 > groups: enc > status: active > vether0: flags=8843<UP,BROADCAST,RUNNING,SIMPLEX,MULTICAST> mtu 1500 > lladdr fe:e1:ba:d0:08:cf > index 5 priority 0 llprio 3 > groups: vether > media: Ethernet autoselect > status: active > inet6 fe80::fce1:baff:fed0:8cf%vether0 prefixlen 64 scopeid 0x5 > inet6 2001:db8:a::101 prefixlen 64 > r1# > r1# sysctl net.inet6.ip6.forwarding > net.inet6.ip6.forwarding=1 > r1# > r1# cat /etc/ospf6d.conf > router-id 192.168.250.101 > > area 0.0.0.0 { > interface vio0 > interface vether0 { passive } > } > r1# > r1# > r1# ospf6d -dv > if_newaddr: ifindex 3, addr fe80::1/64, dest :: > if_newaddr: ifindex 1, addr fe80::fce1:bbff:fed1:10e1/64 > if_newaddr: ifindex 1, addr 2001:db8::101/64 > if_newaddr: ifindex 5, addr fe80::fce1:baff:fed0:8cf/64 > if_newaddr: ifindex 5, addr 2001:db8:a::101/64 > startup > if_set_ipv6_checksum setting cksum offset to 12 > orig_rtr_lsa: area 0.0.0.0 > if_fsm: event UP resulted in action START and changing state for interface > vether0 from DOWN to DOWN > if_join_group: interface vio0 addr ff02::5 > orig_rtr_lsa: area 0.0.0.0 > orig_link_lsa: interface vio0 > if_fsm: event UP resulted in action START and changing state for interface > vio0 from DOWN to WAIT > orig_intra_lsa_net: area 0.0.0.0, interface vether0 > orig_intra_lsa_net: area 0.0.0.0, interface vio0 > orig_intra_lsa_rtr: area 0.0.0.0, interface vether0: 2001:db8:a::101/64 > spf_calc: area 0.0.0.0 calculated > *(192.168.250.101, 0x2001, 0.0.0.0) cost 0 has nexthops [] > nbr_fsm: event HELLO_RECEIVED resulted in action START_INACTIVITY_TIMER and > changing state for neighbor ID 192.168.250.102 from DOWN to INIT > nbr_fsm: event 2_WAY_RECEIVED resulted in action EVAL and changing state for > neighbor ID 192.168.250.102 from INIT to 2-WAY > if_act_elect: interface vio0 old dr none new dr 192.168.250.102, old bdr none > new bdr 192.168.250.101 > if_join_group: interface vio0 addr ff02::6 > nbr_fsm: event ADJ_OK resulted in action EVAL and changing state for neighbor > ID 192.168.250.102 from 2-WAY to EXSTA > orig_rtr_lsa: area 0.0.0.0 > orig_rtr_lsa: area 0.0.0.0 > orig_link_lsa: interface vio0 > orig_link_lsa: link local address fe80::fce1:bbff:fed1:10e1 > orig_link_lsa: prefix 2001:db8:: > if_fsm: event BACKUPSEEN resulted in action ELECT and changing state for > interface vio0 from WAIT to BCKUP > if_act_elect: interface vio0 old dr 192.168.250.102 new dr 192.168.250.102, > old bdr 192.168.250.101 new bdr 192.168.250.101 > if_fsm: event NEIGHBORCHANGE resulted in action ELECT and changing state for > interface vio0 from BCKUP to BCKUP > orig_intra_lsa_net: area 0.0.0.0, interface vether0 > orig_intra_lsa_net: area 0.0.0.0, interface vio0 > orig_intra_lsa_rtr: area 0.0.0.0, interface vether0: 2001:db8:a::101/64 > orig_intra_lsa_net: area 0.0.0.0, interface vether0 > orig_intra_lsa_net: area 0.0.0.0, interface vio0 > orig_intra_lsa_rtr: area 0.0.0.0, interface vether0: 2001:db8:a::101/64 > orig_intra_lsa_rtr: area 0.0.0.0, interface vio0: 2001:db8::101/64 > nbr_fsm: event NEGOTIATION_DONE resulted in action SNAPSHOT and changing > state for neighbor ID 192.168.250.102 from EXSTA to SNAP > nbr_fsm: event SNAPSHOT_DONE resulted in action SNAPSHOT_DONE and changing > state for neighbor ID 192.168.250.102 from SNAP to EXCHG > nbr_fsm: event EXCHANGE_DONE resulted in action EXCHANGE_DONE and changing > state for neighbor ID 192.168.250.102 from EXCHG to LOAD > spf_calc: area 0.0.0.0 calculated > *(192.168.250.101, 0x2001, 0.0.0.0) cost 0 has nexthops [] > (192.168.250.102, 0x2001, 0.0.0.0) cost 16777215 has nexthops [] > ospf6d: rt_calc: Intra-Area-Prefix LSA (192.168.250.102, 1) references > non-existent Network LSA (192.168.250.102, 1) > orig_intra_lsa_net: area 0.0.0.0, interface vether0 > orig_intra_lsa_net: area 0.0.0.0, interface vio0 > orig_intra_lsa_rtr: area 0.0.0.0, interface vether0: 2001:db8:a::101/64 > orig_intra_lsa_rtr: area 0.0.0.0, interface vio0: 2001:db8::101/64 > orig_rtr_lsa: area 0.0.0.0 > orig_rtr_lsa: transit net, interface vio0 > nbr_fsm: event LOADING_DONE resulted in action NOTHING and changing state for > neighbor ID 192.168.250.102 from LOAD to FULL > orig_intra_lsa_net: area 0.0.0.0, interface vether0 > orig_intra_lsa_net: area 0.0.0.0, interface vio0 > orig_intra_lsa_rtr: area 0.0.0.0, interface vether0: 2001:db8:a::101/64 > spf_calc: area 0.0.0.0 calculated > *(192.168.250.101, 0x2001, 0.0.0.0) cost 0 has nexthops [] > (192.168.250.102, 0x2001, 0.0.0.0) cost 10 has nexthops > [fe80::fce1:bbff:fed1:4cfb%vio0] > (192.168.250.102, 0x2002, 0.0.0.1) cost 10 has nexthops [::%vio0] > if_fsm: event WAITTIMER resulted in action NOTHING and changing state for > interface vio0 from BCKUP to BCKUP > > > [ on another console: ospf6ctl reload ] > > > if_del: interface vether0 > if_del: interface vio0 > configuration reloaded > merge_interfaces: proc 2 area 0.0.0.0 removing interface vether0 > if_del: interface vether0 > merge_interfaces: proc 2 area 0.0.0.0 removing interface vio0 > if_del: interface vio0 > merge_interfaces: proc 1 area 0.0.0.0 removing interface vether0 > orig_rtr_lsa: area 0.0.0.0 > orig_rtr_lsa: transit net, interface vio0 > if_fsm: event DOWN resulted in action RESET and changing state for interface > vether0 from DOWN to DOWN > if_del: interface vether0 > merge_interfaces: proc 1 area 0.0.0.0 removing interface vio0 > if_leave_group: interface vio0 addr ff02::5 > if_leave_group: interface vio0 addr ff02::6 > orig_rtr_lsa: area 0.0.0.0 > if_act_elect: interface vio0 old dr 192.168.250.102 new dr 192.168.250.101, > old bdr 192.168.250.101 new bdr none > orig_rtr_lsa: area 0.0.0.0 > orig_rtr_lsa: area 0.0.0.0 > orig_link_lsa: interface vio0 > orig_link_lsa: link local address fe80::fce1:bbff:fed1:10e1 > orig_link_lsa: prefix 2001:db8:: > if_fsm: event NEIGHBORCHANGE resulted in action ELECT and changing state for > interface vio0 from BCKUP to DR > nbr_fsm: event KILL_NBR resulted in action DELETE and changing state for > neighbor ID 192.168.250.102 from FULL to DOWN > orig_rtr_lsa: area 0.0.0.0 > orig_link_lsa: interface vio0 > if_fsm: event DOWN resulted in action RESET and changing state for interface > vio0 from BCKUP to DOWN > if_del: interface vio0 > fatal in rde: interface lost area > kernel routing table decoupled > waiting for children to terminate > ospf engine exiting > terminating > r1# > > > > OpenBSD 6.1-beta (GENERIC.MP) #217: Wed Mar 8 11:31:33 MST 2017 > dera...@amd64.openbsd.org:/usr/src/sys/arch/amd64/compile/GENERIC.MP > real mem = 251658240 (240MB) > avail mem = 239484928 (228MB) > mpath0 at root > scsibus0 at mpath0: 256 targets > mainbus0 at root > bios0 at mainbus0 > acpi at bios0 not configured > cpu0 at mainbus0: (uniprocessor) > cpu0: Intel(R) Core(TM) i5-5200U CPU @ 2.20GHz, 2199.29 MHz > cpu0: > FPU,VME,DE,PSE,MSR,PAE,MCE,CX8,SEP,PGE,MCA,CMOV,PSE36,CFLUSH,MMX,FXSR,SSE,SSE2,SSE3,PCLMUL,SSSE3,FMA3,CX16,SSE4.1,SSE4.2,MOVBE,POPCNT,AES,XSAVE,AVX,F16C,RDRAND,HV,FSGSBASE,BMI1,AVX2,SMEP,BMI2,ERMS,RDSEED,ADX,SMAP > cpu0: smt 0, core 0, package 0 > pvbus0 at mainbus0: OpenBSD > pci0 at mainbus0 bus 0 > pchb0 at pci0 dev 0 function 0 "OpenBSD VMM PCI Host Bridge" rev 0x00 > virtio0 at pci0 dev 1 function 0 "Qumranet Virtio RNG" rev 0x00 > viornd0 at virtio0 > virtio0: irq 3 > virtio1 at pci0 dev 2 function 0 "Qumranet Virtio Storage" rev 0x00 > vioblk0 at virtio1 > scsibus1 at vioblk0: 2 targets > sd0 at scsibus1 targ 0 lun 0: <VirtIO, Block Device, > SCSI3 0/direct fixed > sd0: 512MB, 512 bytes/sector, 1048576 sectors > virtio1: irq 5 > virtio2 at pci0 dev 3 function 0 "Qumranet Virtio Network" rev 0x00 > vio0 at virtio2: address fe:e1:bb:d1:10:e1 > virtio2: irq 7 > virtio3 at pci0 dev 4 function 0 "OpenBSD VMM Control Interface" rev 0x00 > vmmci0 at virtio3 > virtio3: irq 9 > isa0 at mainbus0 > isadma0 at isa0 > com0 at isa0 port 0x3f8/8 irq 4: ns8250, no fifo > com0: console > vmm at mainbus0 not configured > vscsi0 at root > scsibus2 at vscsi0: 256 targets > softraid0 at root > scsibus3 at softraid0: 256 targets > root on sd0a (f601f5d1ff11daae.a) swap on sd0b dump on sd0b > -- jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF DDCC 0DFA 74AE 1524 E7EE