summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorclaudio <claudio@openbsd.org>2008-12-30 21:33:52 +0000
committerclaudio <claudio@openbsd.org>2008-12-30 21:33:52 +0000
commitaeb06b086af89dc1d0838c34bec862be47d09ea8 (patch)
treeeead77d97eee4b746b65d8fa44a19b73f1c90c7b
parentFirst try at originating Link (type-8) LSA. Code is wrong and the initial (diff)
downloadwireguard-openbsd-aeb06b086af89dc1d0838c34bec862be47d09ea8.tar.xz
wireguard-openbsd-aeb06b086af89dc1d0838c34bec862be47d09ea8.zip
Add code to show Link LSA. Make the other detailed views a bit shorter by
removing an empty newline.
-rw-r--r--usr.sbin/ospf6ctl/ospf6ctl.c39
-rw-r--r--usr.sbin/ospf6ctl/parser.c3
-rw-r--r--usr.sbin/ospf6ctl/parser.h3
3 files changed, 39 insertions, 6 deletions
diff --git a/usr.sbin/ospf6ctl/ospf6ctl.c b/usr.sbin/ospf6ctl/ospf6ctl.c
index 5d62713e2f3..84f9baec1e3 100644
--- a/usr.sbin/ospf6ctl/ospf6ctl.c
+++ b/usr.sbin/ospf6ctl/ospf6ctl.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: ospf6ctl.c,v 1.16 2008/12/28 22:05:04 sobrado Exp $ */
+/* $OpenBSD: ospf6ctl.c,v 1.17 2008/12/30 21:33:52 claudio Exp $ */
/*
* Copyright (c) 2005 Claudio Jeker <claudio@openbsd.org>
@@ -156,6 +156,9 @@ main(int argc, char *argv[])
case SHOW_DBEXT:
imsg_compose(ibuf, IMSG_CTL_SHOW_DB_EXT, 0, 0, NULL, 0);
break;
+ case SHOW_DBLINK:
+ imsg_compose(ibuf, IMSG_CTL_SHOW_DB_LINK, 0, 0, NULL, 0);
+ break;
case SHOW_DBNET:
imsg_compose(ibuf, IMSG_CTL_SHOW_DB_NET, 0, 0, NULL, 0);
break;
@@ -245,6 +248,7 @@ main(int argc, char *argv[])
done = show_database_msg(&imsg);
break;
case SHOW_DBEXT:
+ case SHOW_DBLINK:
case SHOW_DBNET:
case SHOW_DBRTR:
case SHOW_DBSUM:
@@ -706,6 +710,7 @@ show_db_msg_detail(struct imsg *imsg)
struct iface *iface;
struct lsa *lsa;
struct lsa_rtr_link *rtr_link;
+ struct lsa_prefix *prefix;
struct lsa_asext *asext;
u_int16_t i, nlinks, off;
@@ -735,6 +740,31 @@ show_db_msg_detail(struct imsg *imsg)
lasttype = lsa->hdr.type;
break;
+ case IMSG_CTL_SHOW_DB_LINK:
+ lsa = imsg->data;
+ if (lsa->hdr.type != lasttype)
+ show_database_head(area_id, ifname, lsa->hdr.type);
+ show_db_hdr_msg_detail(&lsa->hdr);
+ printf("Options: %s\n",
+ print_ospf_options(LSA_24_GETLO(ntohl(lsa->data.link.opts))));
+ printf("Link Local Address: %s\n", log_in6addr(&lsa->data.link.lladdr));
+
+ nlinks = ntohl(lsa->data.link.numprefix);
+ printf("Number of Prefixes: %d\n", nlinks);
+ off = sizeof(lsa->hdr) + sizeof(struct lsa_link);
+
+ for (i = 0; i < nlinks; i++) {
+ prefix = (struct lsa_prefix *)((char *)lsa + off);
+
+ printf(" Prefix Address: %s\n", log_in6addr(&prefix->prefix));
+ printf(" Prefix Length: %d, Options: %x\n", prefix->prefixlen, prefix->options);
+
+ off += sizeof(struct lsa_prefix);
+ }
+
+ printf("\n");
+ lasttype = lsa->hdr.type;
+ break;
case IMSG_CTL_SHOW_DB_NET:
lsa = imsg->data;
if (lsa->hdr.type != lasttype)
@@ -746,6 +776,7 @@ show_db_msg_detail(struct imsg *imsg)
nlinks = (ntohs(lsa->hdr.len) - sizeof(struct lsa_hdr)
- sizeof(u_int32_t)) / sizeof(struct lsa_net_link);
off = sizeof(lsa->hdr) + sizeof(u_int32_t);
+ printf("Number of Routers: %d\n", nlinks);
for (i = 0; i < nlinks; i++) {
addr.s_addr = lsa->data.net.att_rtr[i];
@@ -767,7 +798,7 @@ show_db_msg_detail(struct imsg *imsg)
nlinks = (ntohs(lsa->hdr.len) - sizeof(struct lsa_hdr)
- sizeof(u_int32_t)) / sizeof(struct lsa_rtr_link);
- printf("Number of Links: %d\n\n", nlinks);
+ printf("Number of Links: %d\n", nlinks);
off = sizeof(lsa->hdr) + sizeof(struct lsa_rtr);
@@ -814,7 +845,7 @@ show_db_msg_detail(struct imsg *imsg)
show_database_head(area_id, ifname, lsa->hdr.type);
show_db_hdr_msg_detail(&lsa->hdr);
printf("Prefix: XXX\n");
- printf("Metric: %d\n\n", ntohl(lsa->data.pref_sum.metric) &
+ printf("Metric: %d\n", ntohl(lsa->data.pref_sum.metric) &
LSA_METRIC_MASK);
lasttype = lsa->hdr.type;
break;
@@ -827,7 +858,7 @@ show_db_msg_detail(struct imsg *imsg)
addr.s_addr = lsa->data.rtr_sum.dest_rtr_id;
printf("Destination Router ID: %s\n", inet_ntoa(addr));
printf("Options: %s\n",
- print_ospf_options(ntohl(lsa->data.rtr_sum.options)));
+ print_ospf_options(ntohl(lsa->data.rtr_sum.opts)));
printf("Metric: %d\n\n", ntohl(lsa->data.rtr_sum.metric) &
LSA_METRIC_MASK);
case IMSG_CTL_AREA:
diff --git a/usr.sbin/ospf6ctl/parser.c b/usr.sbin/ospf6ctl/parser.c
index 77399ec9893..6608b95f50a 100644
--- a/usr.sbin/ospf6ctl/parser.c
+++ b/usr.sbin/ospf6ctl/parser.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: parser.c,v 1.4 2007/12/13 08:57:32 claudio Exp $ */
+/* $OpenBSD: parser.c,v 1.5 2008/12/30 21:33:52 claudio Exp $ */
/*
* Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -96,6 +96,7 @@ static const struct token t_show_db[] = {
{KEYWORD, "area", SHOW_DBBYAREA, t_show_area},
{KEYWORD, "asbr", SHOW_DBASBR, NULL},
{KEYWORD, "external", SHOW_DBEXT, NULL},
+ {KEYWORD, "link", SHOW_DBLINK, NULL},
{KEYWORD, "network", SHOW_DBNET, NULL},
{KEYWORD, "router", SHOW_DBRTR, NULL},
{KEYWORD, "self-originated", SHOW_DBSELF, NULL},
diff --git a/usr.sbin/ospf6ctl/parser.h b/usr.sbin/ospf6ctl/parser.h
index 6a801e85b9a..5ac958a176c 100644
--- a/usr.sbin/ospf6ctl/parser.h
+++ b/usr.sbin/ospf6ctl/parser.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: parser.h,v 1.3 2007/12/13 08:57:32 claudio Exp $ */
+/* $OpenBSD: parser.h,v 1.4 2008/12/30 21:33:52 claudio Exp $ */
/*
* Copyright (c) 2004 Esben Norby <norby@openbsd.org>
@@ -38,6 +38,7 @@ enum actions {
SHOW_DB,
SHOW_DBBYAREA,
SHOW_DBEXT,
+ SHOW_DBLINK,
SHOW_DBNET,
SHOW_DBRTR,
SHOW_DBSELF,