Browse Source

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>
Mikio Hara 8 years ago
parent
commit
f5079bd7f6
4 changed files with 28 additions and 1 deletions
  1. 11 0
      route/defs_openbsd.go
  2. 4 0
      route/route_test.go
  3. 1 0
      route/sys_openbsd.go
  4. 12 1
      route/zsys_openbsd.go

+ 11 - 0
route/defs_openbsd.go

@@ -69,6 +69,9 @@ const (
 	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 @@ const (
 	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 @@ const (
 	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
 )
 

+ 4 - 0
route/route_test.go

@@ -74,6 +74,10 @@ var addrAttrNames = [...]string{
 	"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 {

+ 1 - 0
route/sys_openbsd.go

@@ -75,5 +75,6 @@ func probeRoutingStack() (int, map[int]*wireFormat) {
 		sysRTM_DELADDR:    ifam,
 		sysRTM_IFINFO:     ifm,
 		sysRTM_IFANNOUNCE: ifanm,
+		sysRTM_DESYNC:     rtm,
 	}
 }

+ 12 - 1
route/zsys_openbsd.go

@@ -54,6 +54,9 @@ const (
 	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 @@ const (
 	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 @@ const (
 	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 (