Re: rtadvd unicast

2016-02-08 Thread Alexander Bluhm
On Tue, Feb 09, 2016 at 12:23:51AM +0100, J??r??mie Courr??ges-Anglas wrote:
> 
> > rtadvd contains code to send unicast replies, RFC4861 mentions this
> > possibility (section 6.2.6) but I'm having a hard time thinking how it
> > could be useful.
> >
> > Since the sending part is commented out since it was introduced, I doubt
> > that anyone will miss it.  This removes pointless memory allocations.
> >
> > ok?

OK bluhm@

> 
> Updated patch:
> 
> Index: config.c
> ===
> RCS file: /cvs/src/usr.sbin/rtadvd/config.c,v
> retrieving revision 1.49
> diff -u -p -r1.49 config.c
> --- config.c  8 Feb 2016 23:19:00 -   1.49
> +++ config.c  8 Feb 2016 23:22:13 -
> @@ -111,7 +111,6 @@ getconfig(char *intface)
>   TAILQ_INIT(&tmp->rtinfos);
>   TAILQ_INIT(&tmp->rdnsss);
>   TAILQ_INIT(&tmp->dnssls);
> - SLIST_INIT(&tmp->soliciters);
>  
>   /* check if we are allowed to forward packets (if not determined) */
>   if (forwarding < 0) {
> Index: rtadvd.c
> ===
> RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.c,v
> retrieving revision 1.66
> diff -u -p -r1.66 rtadvd.c
> --- rtadvd.c  8 Feb 2016 23:19:00 -   1.66
> +++ rtadvd.c  8 Feb 2016 23:22:14 -
> @@ -690,18 +690,6 @@ rs_input(int len, struct nd_router_solic
>   {
>   long delay; /* must not be greater than 100 */
>   struct timeval interval, now, min_delay, tm_tmp, *rest;
> - struct soliciter *sol;
> -
> - /*
> -  * record sockaddr waiting for RA, if possible
> -  */
> - sol = malloc(sizeof(*sol));
> - if (sol) {
> - sol->addr = *from;
> - /*XXX RFC2553 need clarification on flowinfo */
> - sol->addr.sin6_flowinfo = 0;
> - SLIST_INSERT_HEAD(&ra->soliciters, sol, entry);
> - }
>  
>   /*
>* If there is already a waiting RS packet, don't
> @@ -1280,7 +1268,6 @@ ra_output(struct rainfo *rainfo)
>   int i;
>   struct cmsghdr *cm;
>   struct in6_pktinfo *pi;
> - struct soliciter *sol;
>  
>   if ((iflist[rainfo->ifindex]->ifm_flags & IFF_UP) == 0) {
>   log_debug("%s is not up, skip sending RA", rainfo->ifname);
> @@ -1321,25 +1308,6 @@ ra_output(struct rainfo *rainfo)
>   if (i < 0 || i != rainfo->ra_datalen)
>   if (i < 0)
>   log_warn("sendmsg on %s", rainfo->ifname);
> -
> - /*
> -  * unicast advertisements
> -  * XXX commented out.  reason: though spec does not forbit it, unicast
> -  * advert does not really help
> -  */
> - while (!SLIST_EMPTY(&rainfo->soliciters)) {
> - sol = SLIST_FIRST(&rainfo->soliciters);
> - SLIST_REMOVE_HEAD(&rainfo->soliciters, entry);
> -#if 0
> - sndmhdr.msg_name = (caddr_t)&sol->addr;
> - i = sendmsg(sock, &sndmhdr, 0);
> - if (i < 0 || i != rainfo->ra_datalen)
> - if (i < 0)
> - log_warn("unicast sendmsg on %s",
> - rainfo->ifname);
> -#endif
> - free(sol);
> - }
>  
>   /* update counter */
>   if (rainfo->initcounter < MAX_INITIAL_RTR_ADVERTISEMENTS)
> Index: rtadvd.h
> ===
> RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.h,v
> retrieving revision 1.20
> diff -u -p -r1.20 rtadvd.h
> --- rtadvd.h  8 Feb 2016 23:19:00 -   1.20
> +++ rtadvd.h  8 Feb 2016 23:22:14 -
> @@ -117,11 +117,6 @@ struct dnssl {
>   TAILQ_HEAD(dnssldomlist, dnssldom) dnssldoms;
>  };
>  
> -struct soliciter {
> - SLIST_ENTRY(soliciter) entry;
> - struct sockaddr_in6 addr;
> -};
> -
>  struct   rainfo {
>   /* pointer for list */
>   SLIST_ENTRY(rainfo) entry;
> @@ -170,9 +165,6 @@ structrainfo {
>   u_quad_t rainput;   /* number of RAs received */
>   u_quad_t rainconsistent; /* number of RAs inconsistent with ours */
>   u_quad_t rsinput;   /* number of RSs received */
> -
> - /* info about soliciter */
> - SLIST_HEAD(, soliciter) soliciters; /* recent solicitation source */
>  };
>  SLIST_HEAD(ralist, rainfo);
>  
> 
> 
> -- 
> jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE



Re: rtadvd unicast

2016-02-08 Thread Jérémie Courrèges-Anglas

> rtadvd contains code to send unicast replies, RFC4861 mentions this
> possibility (section 6.2.6) but I'm having a hard time thinking how it
> could be useful.
>
> Since the sending part is commented out since it was introduced, I doubt
> that anyone will miss it.  This removes pointless memory allocations.
>
> ok?

Updated patch:

Index: config.c
===
RCS file: /cvs/src/usr.sbin/rtadvd/config.c,v
retrieving revision 1.49
diff -u -p -r1.49 config.c
--- config.c8 Feb 2016 23:19:00 -   1.49
+++ config.c8 Feb 2016 23:22:13 -
@@ -111,7 +111,6 @@ getconfig(char *intface)
TAILQ_INIT(&tmp->rtinfos);
TAILQ_INIT(&tmp->rdnsss);
TAILQ_INIT(&tmp->dnssls);
-   SLIST_INIT(&tmp->soliciters);
 
/* check if we are allowed to forward packets (if not determined) */
if (forwarding < 0) {
Index: rtadvd.c
===
RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.c,v
retrieving revision 1.66
diff -u -p -r1.66 rtadvd.c
--- rtadvd.c8 Feb 2016 23:19:00 -   1.66
+++ rtadvd.c8 Feb 2016 23:22:14 -
@@ -690,18 +690,6 @@ rs_input(int len, struct nd_router_solic
{
long delay; /* must not be greater than 100 */
struct timeval interval, now, min_delay, tm_tmp, *rest;
-   struct soliciter *sol;
-
-   /*
-* record sockaddr waiting for RA, if possible
-*/
-   sol = malloc(sizeof(*sol));
-   if (sol) {
-   sol->addr = *from;
-   /*XXX RFC2553 need clarification on flowinfo */
-   sol->addr.sin6_flowinfo = 0;
-   SLIST_INSERT_HEAD(&ra->soliciters, sol, entry);
-   }
 
/*
 * If there is already a waiting RS packet, don't
@@ -1280,7 +1268,6 @@ ra_output(struct rainfo *rainfo)
int i;
struct cmsghdr *cm;
struct in6_pktinfo *pi;
-   struct soliciter *sol;
 
if ((iflist[rainfo->ifindex]->ifm_flags & IFF_UP) == 0) {
log_debug("%s is not up, skip sending RA", rainfo->ifname);
@@ -1321,25 +1308,6 @@ ra_output(struct rainfo *rainfo)
if (i < 0 || i != rainfo->ra_datalen)
if (i < 0)
log_warn("sendmsg on %s", rainfo->ifname);
-
-   /*
-* unicast advertisements
-* XXX commented out.  reason: though spec does not forbit it, unicast
-* advert does not really help
-*/
-   while (!SLIST_EMPTY(&rainfo->soliciters)) {
-   sol = SLIST_FIRST(&rainfo->soliciters);
-   SLIST_REMOVE_HEAD(&rainfo->soliciters, entry);
-#if 0
-   sndmhdr.msg_name = (caddr_t)&sol->addr;
-   i = sendmsg(sock, &sndmhdr, 0);
-   if (i < 0 || i != rainfo->ra_datalen)
-   if (i < 0)
-   log_warn("unicast sendmsg on %s",
-   rainfo->ifname);
-#endif
-   free(sol);
-   }
 
/* update counter */
if (rainfo->initcounter < MAX_INITIAL_RTR_ADVERTISEMENTS)
Index: rtadvd.h
===
RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.h,v
retrieving revision 1.20
diff -u -p -r1.20 rtadvd.h
--- rtadvd.h8 Feb 2016 23:19:00 -   1.20
+++ rtadvd.h8 Feb 2016 23:22:14 -
@@ -117,11 +117,6 @@ struct dnssl {
TAILQ_HEAD(dnssldomlist, dnssldom) dnssldoms;
 };
 
-struct soliciter {
-   SLIST_ENTRY(soliciter) entry;
-   struct sockaddr_in6 addr;
-};
-
 struct rainfo {
/* pointer for list */
SLIST_ENTRY(rainfo) entry;
@@ -170,9 +165,6 @@ struct  rainfo {
u_quad_t rainput;   /* number of RAs received */
u_quad_t rainconsistent; /* number of RAs inconsistent with ours */
u_quad_t rsinput;   /* number of RSs received */
-
-   /* info about soliciter */
-   SLIST_HEAD(, soliciter) soliciters; /* recent solicitation source */
 };
 SLIST_HEAD(ralist, rainfo);
 


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE



rtadvd unicast

2016-02-05 Thread Jérémie Courrèges-Anglas

rtadvd contains code to send unicast replies, RFC4861 mentions this
possibility (section 6.2.6) but I'm having a hard time thinking how it
could be useful.

Since the sending part is commented out since it was introduced, I doubt
that anyone will miss it.  This removes pointless memory allocations.

ok?

Index: config.c
===
RCS file: /cvs/src/usr.sbin/rtadvd/config.c,v
retrieving revision 1.46
diff -u -p -r1.46 config.c
--- config.c25 Jan 2016 05:00:12 -  1.46
+++ config.c5 Feb 2016 12:49:19 -
@@ -111,7 +111,6 @@ getconfig(char *intface)
TAILQ_INIT(&tmp->rtinfos);
TAILQ_INIT(&tmp->rdnsss);
TAILQ_INIT(&tmp->dnssls);
-   SLIST_INIT(&tmp->soliciters);
 
/* check if we are allowed to forward packets (if not determined) */
if (forwarding < 0) {
Index: rtadvd.c
===
RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.c,v
retrieving revision 1.61
diff -u -p -r1.61 rtadvd.c
--- rtadvd.c1 Dec 2015 12:11:31 -   1.61
+++ rtadvd.c5 Feb 2016 12:49:19 -
@@ -686,18 +686,6 @@ rs_input(int len, struct nd_router_solic
{
long delay; /* must not be greater than 100 */
struct timeval interval, now, min_delay, tm_tmp, *rest;
-   struct soliciter *sol;
-
-   /*
-* record sockaddr waiting for RA, if possible
-*/
-   sol = malloc(sizeof(*sol));
-   if (sol) {
-   sol->addr = *from;
-   /*XXX RFC2553 need clarification on flowinfo */
-   sol->addr.sin6_flowinfo = 0;
-   SLIST_INSERT_HEAD(&ra->soliciters, sol, entry);
-   }
 
/*
 * If there is already a waiting RS packet, don't
@@ -1276,7 +1264,6 @@ ra_output(struct rainfo *rainfo)
int i;
struct cmsghdr *cm;
struct in6_pktinfo *pi;
-   struct soliciter *sol;
 
if ((iflist[rainfo->ifindex]->ifm_flags & IFF_UP) == 0) {
log_debug("%s is not up, skip sending RA", rainfo->ifname);
@@ -1317,25 +1304,6 @@ ra_output(struct rainfo *rainfo)
if (i < 0 || i != rainfo->ra_datalen)
if (i < 0)
log_warn("sendmsg on %s", rainfo->ifname);
-
-   /*
-* unicast advertisements
-* XXX commented out.  reason: though spec does not forbit it, unicast
-* advert does not really help
-*/
-   while (!SLIST_EMPTY(&rainfo->soliciters)) {
-   sol = SLIST_FIRST(&rainfo->soliciters);
-   SLIST_REMOVE_HEAD(&rainfo->soliciters, entry);
-#if 0
-   sndmhdr.msg_name = (caddr_t)&sol->addr;
-   i = sendmsg(sock, &sndmhdr, 0);
-   if (i < 0 || i != rainfo->ra_datalen)
-   if (i < 0)
-   log_warn("unicast sendmsg on %s",
-   rainfo->ifname);
-#endif
-   free(sol);
-   }
 
/* update counter */
if (rainfo->initcounter < MAX_INITIAL_RTR_ADVERTISEMENTS)
Index: rtadvd.h
===
RCS file: /cvs/src/usr.sbin/rtadvd/rtadvd.h,v
retrieving revision 1.18
diff -u -p -r1.18 rtadvd.h
--- rtadvd.h30 Nov 2015 21:04:15 -  1.18
+++ rtadvd.h5 Feb 2016 12:49:20 -
@@ -117,11 +117,6 @@ struct dnssl {
TAILQ_HEAD(dnssldomlist, dnssldom) dnssldoms;
 };
 
-struct soliciter {
-   SLIST_ENTRY(soliciter) entry;
-   struct sockaddr_in6 addr;
-};
-
 struct rainfo {
/* pointer for list */
SLIST_ENTRY(rainfo) entry;
@@ -170,9 +165,6 @@ struct  rainfo {
u_quad_t rainput;   /* number of RAs received */
u_quad_t rainconsistent; /* number of RAs inconsistent with ours */
u_quad_t rsinput;   /* number of RSs received */
-
-   /* info about soliciter */
-   SLIST_HEAD(, soliciter) soliciters; /* recent solication source */
 };
 SLIST_HEAD(ralist, rainfo);
 


-- 
jca | PGP : 0x1524E7EE / 5135 92C1 AD36 5293 2BDF  DDCC 0DFA 74AE 1524 E7EE