summaryrefslogtreecommitdiffhomepage
path: root/server/zclient.go
diff options
context:
space:
mode:
Diffstat (limited to 'server/zclient.go')
-rw-r--r--server/zclient.go14
1 files changed, 11 insertions, 3 deletions
diff --git a/server/zclient.go b/server/zclient.go
index 6ae25e51..3f8627c3 100644
--- a/server/zclient.go
+++ b/server/zclient.go
@@ -76,11 +76,18 @@ func newIPRouteMessage(dst []*table.Path, version uint8, vrfId uint16) *zebra.Me
default:
return nil
}
- flags := uint8(zebra.MESSAGE_NEXTHOP)
+ msgFlags := uint8(zebra.MESSAGE_NEXTHOP)
plen, _ := strconv.Atoi(l[1])
med, err := path.GetMed()
if err == nil {
- flags |= zebra.MESSAGE_METRIC
+ msgFlags |= zebra.MESSAGE_METRIC
+ }
+ var flags zebra.FLAG
+ info := path.GetSource()
+ if info.AS == info.LocalAS {
+ flags = zebra.FLAG_IBGP | zebra.FLAG_INTERNAL
+ } else if info.MultihopTtl > 0 {
+ flags = zebra.FLAG_INTERNAL
}
return &zebra.Message{
Header: zebra.Header{
@@ -92,8 +99,9 @@ func newIPRouteMessage(dst []*table.Path, version uint8, vrfId uint16) *zebra.Me
},
Body: &zebra.IPRouteBody{
Type: zebra.ROUTE_BGP,
+ Flags: flags,
SAFI: zebra.SAFI_UNICAST,
- Message: flags,
+ Message: msgFlags,
Prefix: prefix,
PrefixLength: uint8(plen),
Nexthops: nexthops,