summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjca <jca@openbsd.org>2016-02-29 20:25:46 +0000
committerjca <jca@openbsd.org>2016-02-29 20:25:46 +0000
commit97d9a4fab37b087b245ff30a091340e87dc00b2f (patch)
tree21669ce64c17f1a0d96da5216aa8d6f08b31adbf
parentPrint ssize_t with %zd; ok deraadt@ mmcc@ (diff)
downloadwireguard-openbsd-97d9a4fab37b087b245ff30a091340e87dc00b2f.tar.xz
wireguard-openbsd-97d9a4fab37b087b245ff30a091340e87dc00b2f.zip
Merge add/make_prefix() and kill last use of struct in6_prefixreq in userland.
ok florian@
-rw-r--r--usr.sbin/rtadvd/config.c45
1 files changed, 11 insertions, 34 deletions
diff --git a/usr.sbin/rtadvd/config.c b/usr.sbin/rtadvd/config.c
index 510bdf334b3..b8cb4ae398f 100644
--- a/usr.sbin/rtadvd/config.c
+++ b/usr.sbin/rtadvd/config.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: config.c,v 1.53 2016/02/29 06:37:55 jca Exp $ */
+/* $OpenBSD: config.c,v 1.54 2016/02/29 20:25:46 jca Exp $ */
/* $KAME: config.c,v 1.62 2002/05/29 10:13:10 itojun Exp $ */
/*
@@ -618,8 +618,8 @@ makeentry(char *buf, size_t len, int id, char *string)
* XXX: other parameters of the prefix (e.g. lifetime) ought
* to be specified.
*/
-static void
-add_prefix(struct rainfo *rai, struct in6_prefixreq *ipr)
+void
+make_prefix(struct rainfo *rai, int ifindex, struct in6_addr *addr, int plen)
{
struct prefix *prefix;
u_char ntopbuf[INET6_ADDRSTRLEN];
@@ -628,20 +628,20 @@ add_prefix(struct rainfo *rai, struct in6_prefixreq *ipr)
log_warn("calloc");
return; /* XXX: error or exit? */
}
- prefix->prefix = ipr->ipr_prefix.sin6_addr;
- prefix->prefixlen = ipr->ipr_plen;
- prefix->validlifetime = ipr->ipr_vltime;
- prefix->preflifetime = ipr->ipr_pltime;
- prefix->onlinkflg = ipr->ipr_raf_onlink;
- prefix->autoconfflg = ipr->ipr_raf_auto;
+ prefix->prefix = *addr;
+ prefix->prefixlen = plen;
+ prefix->validlifetime = DEF_ADVVALIDLIFETIME;
+ prefix->preflifetime = DEF_ADVPREFERREDLIFETIME;
+ prefix->onlinkflg = 1;
+ prefix->autoconfflg = 1;
prefix->origin = PREFIX_FROM_DYNAMIC;
TAILQ_INSERT_TAIL(&rai->prefixes, prefix, entry);
log_debug("new prefix %s/%d was added on %s",
- inet_ntop(AF_INET6, &ipr->ipr_prefix.sin6_addr,
+ inet_ntop(AF_INET6, &prefix->prefix,
ntopbuf, INET6_ADDRSTRLEN),
- ipr->ipr_plen, rai->ifname);
+ prefix->prefixlen, rai->ifname);
/* free the previous packet */
free(rai->ra_data);
@@ -679,29 +679,6 @@ delete_prefix(struct rainfo *rai, struct prefix *prefix)
}
void
-make_prefix(struct rainfo *rai, int ifindex, struct in6_addr *addr, int plen)
-{
- struct in6_prefixreq ipr;
-
- memset(&ipr, 0, sizeof(ipr));
- if (if_indextoname(ifindex, ipr.ipr_name) == NULL) {
- log_warn("Prefix added interface No.%d doesn't"
- " exist. This should not happen!", ifindex);
- exit(1);
- }
- ipr.ipr_prefix.sin6_len = sizeof(ipr.ipr_prefix);
- ipr.ipr_prefix.sin6_family = AF_INET6;
- ipr.ipr_prefix.sin6_addr = *addr;
- ipr.ipr_plen = plen;
- ipr.ipr_vltime = DEF_ADVVALIDLIFETIME;
- ipr.ipr_pltime = DEF_ADVPREFERREDLIFETIME;
- ipr.ipr_raf_onlink = 1;
- ipr.ipr_raf_auto = 1;
-
- add_prefix(rai, &ipr);
-}
-
-void
make_packet(struct rainfo *rainfo)
{
size_t packlen, lladdroptlen = 0;