route: make DefaultAddr convey newly added information on OpenBSD

Also makes it possible to capture RTM_DESYNC messages when you have a
routing protocol implementation that requires to be aware of the
health condition of kernel RIB on OpenBSD.

Change-Id: Idd0c8c5e8f5ea72a4d56c9a46c137786bcda6354
Reviewed-on: https://go-review.googlesource.com/50191
Run-TryBot: Mikio Hara <mikioh.mikioh@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Ian Lance Taylor <iant@golang.org>
diff --git a/route/defs_openbsd.go b/route/defs_openbsd.go
index 0f66d36..173bb5d 100644
--- a/route/defs_openbsd.go
+++ b/route/defs_openbsd.go
@@ -69,6 +69,9 @@
 	sysRTM_IFINFO     = C.RTM_IFINFO
 	sysRTM_IFANNOUNCE = C.RTM_IFANNOUNCE
 	sysRTM_DESYNC     = C.RTM_DESYNC
+	sysRTM_INVALIDATE = C.RTM_INVALIDATE
+	sysRTM_BFD        = C.RTM_BFD
+	sysRTM_PROPOSAL   = C.RTM_PROPOSAL
 
 	sysRTA_DST     = C.RTA_DST
 	sysRTA_GATEWAY = C.RTA_GATEWAY
@@ -81,6 +84,10 @@
 	sysRTA_SRC     = C.RTA_SRC
 	sysRTA_SRCMASK = C.RTA_SRCMASK
 	sysRTA_LABEL   = C.RTA_LABEL
+	sysRTA_BFD     = C.RTA_BFD
+	sysRTA_DNS     = C.RTA_DNS
+	sysRTA_STATIC  = C.RTA_STATIC
+	sysRTA_SEARCH  = C.RTA_SEARCH
 
 	sysRTAX_DST     = C.RTAX_DST
 	sysRTAX_GATEWAY = C.RTAX_GATEWAY
@@ -93,6 +100,10 @@
 	sysRTAX_SRC     = C.RTAX_SRC
 	sysRTAX_SRCMASK = C.RTAX_SRCMASK
 	sysRTAX_LABEL   = C.RTAX_LABEL
+	sysRTAX_BFD     = C.RTAX_BFD
+	sysRTAX_DNS     = C.RTAX_DNS
+	sysRTAX_STATIC  = C.RTAX_STATIC
+	sysRTAX_SEARCH  = C.RTAX_SEARCH
 	sysRTAX_MAX     = C.RTAX_MAX
 )
 
diff --git a/route/route_test.go b/route/route_test.go
index 63fd8c5..61bd174 100644
--- a/route/route_test.go
+++ b/route/route_test.go
@@ -74,6 +74,10 @@
 	"df:mpls1-n:tag-o:src", // mpls1 for dragonfly, tag for netbsd, src for openbsd
 	"df:mpls2-o:srcmask",   // mpls2 for dragonfly, srcmask for openbsd
 	"df:mpls3-o:label",     // mpls3 for dragonfly, label for openbsd
+	"o:bfd",                // bfd for openbsd
+	"o:dns",                // dns for openbsd
+	"o:static",             // static for openbsd
+	"o:search",             // search for openbsd
 }
 
 func (attrs addrAttrs) String() string {
diff --git a/route/sys_openbsd.go b/route/sys_openbsd.go
index 19fc025..c5674e8 100644
--- a/route/sys_openbsd.go
+++ b/route/sys_openbsd.go
@@ -75,5 +75,6 @@
 		sysRTM_DELADDR:    ifam,
 		sysRTM_IFINFO:     ifm,
 		sysRTM_IFANNOUNCE: ifanm,
+		sysRTM_DESYNC:     rtm,
 	}
 }
diff --git a/route/zsys_openbsd.go b/route/zsys_openbsd.go
index f5a1ff9..db8c8ef 100644
--- a/route/zsys_openbsd.go
+++ b/route/zsys_openbsd.go
@@ -54,6 +54,9 @@
 	sysRTM_IFINFO     = 0xe
 	sysRTM_IFANNOUNCE = 0xf
 	sysRTM_DESYNC     = 0x10
+	sysRTM_INVALIDATE = 0x11
+	sysRTM_BFD        = 0x12
+	sysRTM_PROPOSAL   = 0x13
 
 	sysRTA_DST     = 0x1
 	sysRTA_GATEWAY = 0x2
@@ -66,6 +69,10 @@
 	sysRTA_SRC     = 0x100
 	sysRTA_SRCMASK = 0x200
 	sysRTA_LABEL   = 0x400
+	sysRTA_BFD     = 0x800
+	sysRTA_DNS     = 0x1000
+	sysRTA_STATIC  = 0x2000
+	sysRTA_SEARCH  = 0x4000
 
 	sysRTAX_DST     = 0x0
 	sysRTAX_GATEWAY = 0x1
@@ -78,7 +85,11 @@
 	sysRTAX_SRC     = 0x8
 	sysRTAX_SRCMASK = 0x9
 	sysRTAX_LABEL   = 0xa
-	sysRTAX_MAX     = 0xb
+	sysRTAX_BFD     = 0xb
+	sysRTAX_DNS     = 0xc
+	sysRTAX_STATIC  = 0xd
+	sysRTAX_SEARCH  = 0xe
+	sysRTAX_MAX     = 0xf
 )
 
 const (