From 27ef27e0a991017a05548fec8fd64f665b827df9 Mon Sep 17 00:00:00 2001 From: Claudio Jeker Date: Thu, 23 Jul 2009 14:53:21 +0000 Subject: Send the used kroute along with the nexthop information. This allows us to show all necessary information in bgpctl show next. OK henning@ --- usr.sbin/bgpd/bgpd.h | 9 ++++++--- usr.sbin/bgpd/kroute.c | 23 +++++++---------------- 2 files changed, 13 insertions(+), 19 deletions(-) (limited to 'usr.sbin/bgpd') diff --git a/usr.sbin/bgpd/bgpd.h b/usr.sbin/bgpd/bgpd.h index 7c0da04b9dc..7c08e1f9a7e 100644 --- a/usr.sbin/bgpd/bgpd.h +++ b/usr.sbin/bgpd/bgpd.h @@ -1,4 +1,4 @@ -/* $OpenBSD: bgpd.h,v 1.242 2009/07/20 15:03:16 claudio Exp $ */ +/* $OpenBSD: bgpd.h,v 1.243 2009/07/23 14:53:18 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -437,10 +437,13 @@ struct pftable_msg { struct ctl_show_nexthop { struct bgpd_addr addr; - struct bgpd_addr gateway; struct kif kif; + union { + struct kroute kr4; + struct kroute6 kr6; + } kr; u_int8_t valid; - u_int8_t connected; + u_int8_t krvalid;; }; struct ctl_neighbor { diff --git a/usr.sbin/bgpd/kroute.c b/usr.sbin/bgpd/kroute.c index c3ad29dd6fd..e90e2775ed0 100644 --- a/usr.sbin/bgpd/kroute.c +++ b/usr.sbin/bgpd/kroute.c @@ -1,4 +1,4 @@ -/* $OpenBSD: kroute.c,v 1.171 2009/07/23 10:20:44 claudio Exp $ */ +/* $OpenBSD: kroute.c,v 1.172 2009/07/23 14:53:20 claudio Exp $ */ /* * Copyright (c) 2003, 2004 Henning Brauer @@ -587,26 +587,17 @@ kr_show_route(struct imsg *imsg) case AF_INET: kr = h->kroute; snh.valid = kroute_validate(&kr->r); - snh.connected = - kr->r.flags & F_CONNECTED; - if ((snh.gateway.v4.s_addr = - kr->r.nexthop.s_addr) != 0) - snh.gateway.af = AF_INET; + snh.krvalid = 1; + memcpy(&snh.kr.kr4, &kr->r, + sizeof(snh.kr.kr4)); ifindex = kr->r.ifindex; break; case AF_INET6: kr6 = h->kroute; snh.valid = kroute6_validate(&kr6->r); - snh.connected = - kr6->r.flags & F_CONNECTED; - if (memcmp(&kr6->r.nexthop, - &in6addr_any, - sizeof(struct in6_addr)) != 0) { - snh.gateway.af = AF_INET6; - memcpy(&snh.gateway.v6, - &kr6->r.nexthop, - sizeof(struct in6_addr)); - } + snh.krvalid = 1; + memcpy(&snh.kr.kr6, &kr6->r, + sizeof(snh.kr.kr6)); ifindex = kr6->r.ifindex; break; } -- cgit v1.2.3