>Synopsis: rtadvd does not detect dynamic changes to monitored interface >Category: system >Environment: System : OpenBSD 5.8 Details : OpenBSD 5.8 (GENERIC.MP) #1: Mon Nov 2 11:58:21 EST 2015 r...@d2500.midnightnetworks.com:/usr/src/sys/arch/amd64/compile/GENERIC.MP
Architecture: OpenBSD.amd64 Machine : amd64 >Description: rtadvd is designed to detect and automatically determine which prefixes are local to a specific link when it is fired up without a configuration file and just started with an interface identifier as a command line argument. It is able to detect automatically when an IPv6 address is added to the monitored interface and discern the prefix on it's own and start sending out Advertisements with the prefix on that same interface announcing itself as the default gateway for that prefix. Starting with about OpenBSD 5.5 or 5.6 I noticed the daemon would pickup the available prefixes on the monitored interface upon startup, but not detect when an address was either removed or added. Addresses removed, continued to have the prefix advertised, and addresses added would not be advertised until the daemon was restarted. The delay in reporting this was because the daemon does pickup the information initially upon startup and thus does mostly work. And since IPv6 addressing changes on my network are not frequent I didn't have a way to easily confirm if my initial suspicions were reproducible without affecting my network with testing. But now some other change in the boot process or the other software I use to provision my IPv6 connectivity (or my ISP now responds slower), it won't even detect the first address added to the monitored interface after boot up, because the rtadvd daemon has already started way before my other dhcpv6 client has had the opportunity to ask for and receive a delegated prefix. So after my firewall box reboots, I have to login and manually restart rtadvd after I confirm I have a valid IPv6 address on the internal interface I run rtadvd on before hosts on my internal network can gain IPv6 connectivity. >How-To-Repeat: Install a recent version of OpenBSD 5.8 and enable IPv6 on at least 1 interface. Load rtadvd with that interface identifier as the sole command line argument. Now add an IPv6 address to that interface and then proceed to send a SIGUSR1 signal to it's PID, and check /var/log/daemon and notice it does not have knowledge of the newly added IPv6 address and it's prefix. Restart daemon and send another -SIGUSR1 and now notice it is aware of the prefix. Delete that address and send yet another -SIGUSR1 and notice it still thinks it should be advertising for that prefix that was removed. >Fix: I do not know what method rtadvd employs to detect changes in the monitored interface's addressing. A member of the mailing list who also has some experience with IPv6 suggested it monitors the routing table for changes to routes on that interface. But I am not sure. Only available work around is to restart daemon every time there is an IPv6 addressing change on that interface. dmesg: OpenBSD 5.8 (GENERIC.MP) #1: Mon Nov 2 11:58:21 EST 2015 r...@d2500.midnightnetworks.com:/usr/src/sys/arch/amd64/compile/GENERIC.MP RTC BIOS diagnostic error 80<clock_battery> real mem = 4259938304 (4062MB) avail mem = 4126941184 (3935MB) mpath0 at root scsibus0 at mpath0: 256 targets mainbus0 at root bios0 at mainbus0: SMBIOS rev. 2.7 @ 0xeb940 (27 entries) bios0: vendor Intel Corp. version "CCCDT10N.86A.0040.2014.0520.1400" date 05/20/2014 bios0: Intel Corporation D2500CC acpi0 at bios0: rev 2 acpi0: sleep states S0 S3 S4 S5 acpi0: tables DSDT FACP SSDT APIC MCFG HPET acpi0: wakeup devices SLT1(S4) PS2M(S4) PS2K(S4) UAR1(S3) UAR2(S3) UAR3(S4) UAR4(S4) USB0(S3) USB1(S3) USB2(S3) USB3(S3) USB7(S3) PXSX(S4) RP01(S4) PXSX(S4) RP02(S4) [...] acpitimer0 at acpi0: 3579545 Hz, 24 bits acpimadt0 at acpi0 addr 0xfee00000: PC-AT compat cpu0 at mainbus0: apid 0 (boot processor) cpu0: Intel(R) Atom(TM) CPU D2500 @ 1.86GHz, 1867.00 MHz cpu0: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF,PERF,ITSC,SENSOR,ARAT cpu0: 512KB 64b/line 8-way L2 cache cpu0: smt 0, core 0, package 0 mtrr: Pentium Pro MTRR support, 7 var ranges, 88 fixed ranges cpu0: apic clock running at 133MHz cpu0: mwait min=64, max=64, C-substates=0.1, IBE cpu1 at mainbus0: apid 1 (application processor) cpu1: Intel(R) Atom(TM) CPU D2500 @ 1.86GHz, 1866.74 MHz cpu1: FPU,VME,DE,PSE,TSC,MSR,PAE,MCE,CX8,APIC,SEP,MTRR,PGE,MCA,CMOV,PAT,PSE36,CFLUSH,DS,ACPI,MMX,FXSR,SSE,SSE2,SS,HTT,TM,PBE,SSE3,DTES64,MWAIT,DS-CPL,TM2,SSSE3,CX16,xTPR,PDCM,MOVBE,NXE,LONG,LAHF,PERF,ITSC,SENSOR,ARAT cpu1: 512KB 64b/line 8-way L2 cache cpu1: smt 0, core 1, package 0 ioapic0 at mainbus0: apid 8 pa 0xfec00000, version 20, 24 pins ioapic0: misconfigured as apic 0, remapped to apid 8 acpimcfg0 at acpi0 addr 0xe0000000, bus 0-63 acpihpet0 at acpi0: 14318179 Hz acpiprt0 at acpi0: bus 0 (PCI0) acpiprt1 at acpi0: bus 3 (P0P1) acpiprt2 at acpi0: bus 2 (RP01) acpiprt3 at acpi0: bus 1 (RP02) acpiprt4 at acpi0: bus -1 (RP03) acpiprt5 at acpi0: bus -1 (RP04) acpicpu0 at acpi0: C1(@1 halt!) acpicpu1 at acpi0: C1(@1 halt!) acpibtn0 at acpi0: PWRB acpibtn1 at acpi0: SLPB acpivideo0 at acpi0: GFX0 acpivout0 at acpivideo0: DD02 pci0 at mainbus0 bus 0 pchb0 at pci0 dev 0 function 0 "Intel Atom D2000/N2000 Host" rev 0x04 vga1 at pci0 dev 2 function 0 "Intel Atom D2000/N2000 Video" rev 0x0b intagp at vga1 not configured wsdisplay0 at vga1 mux 1: console (80x25, vt100 emulation) wsdisplay0: screen 1-5 added (80x25, vt100 emulation) ppb0 at pci0 dev 28 function 0 "Intel 82801GB PCIE" rev 0x02: msi pci1 at ppb0 bus 2 em0 at pci1 dev 0 function 0 "Intel 82574L" rev 0x00: msi, address 00:22:4d:b4:1e:76 ppb1 at pci0 dev 28 function 1 "Intel 82801GB PCIE" rev 0x02: msi pci2 at ppb1 bus 1 em1 at pci2 dev 0 function 0 "Intel 82574L" rev 0x00: msi, address 00:22:4d:b4:1e:7a uhci0 at pci0 dev 29 function 0 "Intel 82801GB USB" rev 0x02: apic 8 int 23 uhci1 at pci0 dev 29 function 1 "Intel 82801GB USB" rev 0x02: apic 8 int 19 uhci2 at pci0 dev 29 function 2 "Intel 82801GB USB" rev 0x02: apic 8 int 18 uhci3 at pci0 dev 29 function 3 "Intel 82801GB USB" rev 0x02: apic 8 int 16 ehci0 at pci0 dev 29 function 7 "Intel 82801GB USB" rev 0x02: apic 8 int 23 usb0 at ehci0: USB revision 2.0 uhub0 at usb0 "Intel EHCI root hub" rev 2.00/1.00 addr 1 ppb2 at pci0 dev 30 function 0 "Intel 82801BAM Hub-to-PCI" rev 0xe2 pci3 at ppb2 bus 3 em2 at pci3 dev 0 function 0 "Intel 82541GI" rev 0x05: apic 8 int 20, address 00:1b:21:4e:d4:a2 pcib0 at pci0 dev 31 function 0 "Intel NM10 LPC" rev 0x02 ahci0 at pci0 dev 31 function 2 "Intel 82801GR AHCI" rev 0x02: msi, AHCI 1.1 ahci0: port 0: 3.0Gb/s scsibus1 at ahci0: 32 targets sd0 at scsibus1 targ 0 lun 0: <ATA, KINGSTON SV100S2, 1205> SCSI3 0/direct fixed t10.ATA_KINGSTON_SV100S232G_50026B722601482B_ sd0: 30533MB, 512 bytes/sector, 62533296 sectors, thin ichiic0 at pci0 dev 31 function 3 "Intel 82801GB SMBus" rev 0x02: apic 8 int 19 iic0 at ichiic0 lm1 at iic0 addr 0x2d: W83627DHG spdmem0 at iic0 addr 0x51: 4GB DDR3 SDRAM PC3-10600 SO-DIMM usb1 at uhci0: USB revision 1.0 uhub1 at usb1 "Intel UHCI root hub" rev 1.00/1.00 addr 1 usb2 at uhci1: USB revision 1.0 uhub2 at usb2 "Intel UHCI root hub" rev 1.00/1.00 addr 1 usb3 at uhci2: USB revision 1.0 uhub3 at usb3 "Intel UHCI root hub" rev 1.00/1.00 addr 1 usb4 at uhci3: USB revision 1.0 uhub4 at usb4 "Intel UHCI root hub" rev 1.00/1.00 addr 1 isa0 at pcib0 isadma0 at isa0 com0 at isa0 port 0x3f8/8 irq 4: ns16550a, 16 byte fifo com1 at isa0 port 0x2f8/8 irq 3: ns16550a, 16 byte fifo pcppi0 at isa0 port 0x61 spkr0 at pcppi0 wbsio0 at isa0 port 0x2e/2: W83627UHG rev 0x32 lm2 at wbsio0 port 0x290/8: W83627DHG lm1: disabling sensors due to alias with lm2 vscsi0 at root scsibus2 at vscsi0: 256 targets softraid0 at root scsibus3 at softraid0: 256 targets root on sd0a (2864f309e4ec4b06.a) swap on sd0b dump on sd0b usbdevs: Controller /dev/usb0: addr 1: high speed, self powered, config 1, EHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered port 3 powered port 4 powered port 5 powered port 6 powered port 7 powered port 8 powered Controller /dev/usb1: addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered Controller /dev/usb2: addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered Controller /dev/usb3: addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered Controller /dev/usb4: addr 1: full speed, self powered, config 1, UHCI root hub(0x0000), Intel(0x8086), rev 1.00 port 1 powered port 2 powered