Re: remove unused rtentry parameter from rtm_addr()

2018-04-23 Thread Claudio Jeker
On Mon, Apr 23, 2018 at 04:38:12PM +0200, Florian Obser wrote:
> any objections? otherwise I'll commit it with OK benno, kn

Not from me. OK claudio@
 
> On Thu, Apr 19, 2018 at 08:08:45AM +0200, Florian Obser wrote:
> > On Wed, Apr 18, 2018 at 11:31:02PM +0200, Alexander Bluhm wrote:
> > > On Wed, Apr 18, 2018 at 05:03:04PM +0200, Florian Obser wrote:
> > > > @@ -1158,9 +1158,9 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> > > > sockaddr *dst)
> > > > error = rtrequest_delete(, prio, ifp, , rtableid);
> > > > if (error == 0) {
> > > > rtm_send(rt, RTM_DELETE, 0, rtableid);
> > > > -   if (flags & RTF_LOCAL)
> > > > -   rtm_addr(rt, RTM_DELADDR, ifa);
> > > > rtfree(rt);
> > > > +   if (flags & RTF_LOCAL)
> > > > +   rtm_addr(RTM_DELADDR, ifa);
> > > > }
> > > > m_free(m);
> > > >  
> > > 
> > > Why do you change the order of rtfree() and rtm_addr()?
> > > 
> > > Have you checked that the rt->rt_ifa is not holding the last reference
> > > to ifa?  Otherwise the ifafree() in rtfree() could free it.
> > > 
> > > bluhm
> > > 
> > 
> > I missread rtfree() for free(). Best to not do that.
> > 
> > diff --git net/route.c net/route.c
> > index 30c8def301d..fc8f5f3707a 100644
> > --- net/route.c
> > +++ net/route.c
> > @@ -1103,7 +1103,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags, struct 
> > sockaddr *dst)
> >  * userland that a new address has been added.
> >  */
> > if (flags & RTF_LOCAL)
> > -   rtm_addr(rt, RTM_NEWADDR, ifa);
> > +   rtm_addr(RTM_NEWADDR, ifa);
> > rtm_send(rt, RTM_ADD, 0, rtableid);
> > rtfree(rt);
> > }
> > @@ -1159,7 +1159,7 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> > sockaddr *dst)
> > if (error == 0) {
> > rtm_send(rt, RTM_DELETE, 0, rtableid);
> > if (flags & RTF_LOCAL)
> > -   rtm_addr(rt, RTM_DELADDR, ifa);
> > +   rtm_addr(RTM_DELADDR, ifa);
> > rtfree(rt);
> > }
> > m_free(m);
> > diff --git net/route.h net/route.h
> > index 9f5459a9a62..3c89348cb43 100644
> > --- net/route.h
> > +++ net/route.h
> > @@ -427,7 +427,7 @@ void rt_maskedcopy(struct sockaddr *,
> > struct sockaddr *, struct sockaddr *);
> >  struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
> >  voidrtm_send(struct rtentry *, int, int, unsigned int);
> > -voidrtm_addr(struct rtentry *, int, struct ifaddr *);
> > +voidrtm_addr(int, struct ifaddr *);
> >  voidrtm_miss(int, struct rt_addrinfo *, int, uint8_t, u_int, int, 
> > u_int);
> >  int rt_setgate(struct rtentry *, struct sockaddr *, u_int);
> >  struct rtentry *rt_getll(struct rtentry *);
> > diff --git net/rtsock.c net/rtsock.c
> > index eb570e25698..c5590378259 100644
> > --- net/rtsock.c
> > +++ net/rtsock.c
> > @@ -1509,7 +1509,7 @@ rtm_ifchg(struct ifnet *ifp)
> >   * copies of it.
> >   */
> >  void
> > -rtm_addr(struct rtentry *rt, int cmd, struct ifaddr *ifa)
> > +rtm_addr(int cmd, struct ifaddr *ifa)
> >  {
> > struct ifnet*ifp = ifa->ifa_ifp;
> > struct mbuf *m;
> > 
> > 
> > -- 
> > I'm not entirely sure you are real.
> > 
> 
> -- 
> I'm not entirely sure you are real.
> 

-- 
:wq Claudio



Re: remove unused rtentry parameter from rtm_addr()

2018-04-23 Thread Florian Obser
any objections? otherwise I'll commit it with OK benno, kn

On Thu, Apr 19, 2018 at 08:08:45AM +0200, Florian Obser wrote:
> On Wed, Apr 18, 2018 at 11:31:02PM +0200, Alexander Bluhm wrote:
> > On Wed, Apr 18, 2018 at 05:03:04PM +0200, Florian Obser wrote:
> > > @@ -1158,9 +1158,9 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> > > sockaddr *dst)
> > >   error = rtrequest_delete(, prio, ifp, , rtableid);
> > >   if (error == 0) {
> > >   rtm_send(rt, RTM_DELETE, 0, rtableid);
> > > - if (flags & RTF_LOCAL)
> > > - rtm_addr(rt, RTM_DELADDR, ifa);
> > >   rtfree(rt);
> > > + if (flags & RTF_LOCAL)
> > > + rtm_addr(RTM_DELADDR, ifa);
> > >   }
> > >   m_free(m);
> > >  
> > 
> > Why do you change the order of rtfree() and rtm_addr()?
> > 
> > Have you checked that the rt->rt_ifa is not holding the last reference
> > to ifa?  Otherwise the ifafree() in rtfree() could free it.
> > 
> > bluhm
> > 
> 
> I missread rtfree() for free(). Best to not do that.
> 
> diff --git net/route.c net/route.c
> index 30c8def301d..fc8f5f3707a 100644
> --- net/route.c
> +++ net/route.c
> @@ -1103,7 +1103,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags, struct 
> sockaddr *dst)
>* userland that a new address has been added.
>*/
>   if (flags & RTF_LOCAL)
> - rtm_addr(rt, RTM_NEWADDR, ifa);
> + rtm_addr(RTM_NEWADDR, ifa);
>   rtm_send(rt, RTM_ADD, 0, rtableid);
>   rtfree(rt);
>   }
> @@ -1159,7 +1159,7 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> sockaddr *dst)
>   if (error == 0) {
>   rtm_send(rt, RTM_DELETE, 0, rtableid);
>   if (flags & RTF_LOCAL)
> - rtm_addr(rt, RTM_DELADDR, ifa);
> + rtm_addr(RTM_DELADDR, ifa);
>   rtfree(rt);
>   }
>   m_free(m);
> diff --git net/route.h net/route.h
> index 9f5459a9a62..3c89348cb43 100644
> --- net/route.h
> +++ net/route.h
> @@ -427,7 +427,7 @@ void   rt_maskedcopy(struct sockaddr *,
>   struct sockaddr *, struct sockaddr *);
>  struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
>  void  rtm_send(struct rtentry *, int, int, unsigned int);
> -void  rtm_addr(struct rtentry *, int, struct ifaddr *);
> +void  rtm_addr(int, struct ifaddr *);
>  void  rtm_miss(int, struct rt_addrinfo *, int, uint8_t, u_int, int, u_int);
>  int   rt_setgate(struct rtentry *, struct sockaddr *, u_int);
>  struct rtentry *rt_getll(struct rtentry *);
> diff --git net/rtsock.c net/rtsock.c
> index eb570e25698..c5590378259 100644
> --- net/rtsock.c
> +++ net/rtsock.c
> @@ -1509,7 +1509,7 @@ rtm_ifchg(struct ifnet *ifp)
>   * copies of it.
>   */
>  void
> -rtm_addr(struct rtentry *rt, int cmd, struct ifaddr *ifa)
> +rtm_addr(int cmd, struct ifaddr *ifa)
>  {
>   struct ifnet*ifp = ifa->ifa_ifp;
>   struct mbuf *m;
> 
> 
> -- 
> I'm not entirely sure you are real.
> 

-- 
I'm not entirely sure you are real.



Re: remove unused rtentry parameter from rtm_addr()

2018-04-19 Thread Florian Obser
On Wed, Apr 18, 2018 at 11:31:02PM +0200, Alexander Bluhm wrote:
> On Wed, Apr 18, 2018 at 05:03:04PM +0200, Florian Obser wrote:
> > @@ -1158,9 +1158,9 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> > sockaddr *dst)
> > error = rtrequest_delete(, prio, ifp, , rtableid);
> > if (error == 0) {
> > rtm_send(rt, RTM_DELETE, 0, rtableid);
> > -   if (flags & RTF_LOCAL)
> > -   rtm_addr(rt, RTM_DELADDR, ifa);
> > rtfree(rt);
> > +   if (flags & RTF_LOCAL)
> > +   rtm_addr(RTM_DELADDR, ifa);
> > }
> > m_free(m);
> >  
> 
> Why do you change the order of rtfree() and rtm_addr()?
> 
> Have you checked that the rt->rt_ifa is not holding the last reference
> to ifa?  Otherwise the ifafree() in rtfree() could free it.
> 
> bluhm
> 

I missread rtfree() for free(). Best to not do that.

diff --git net/route.c net/route.c
index 30c8def301d..fc8f5f3707a 100644
--- net/route.c
+++ net/route.c
@@ -1103,7 +1103,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags, struct sockaddr 
*dst)
 * userland that a new address has been added.
 */
if (flags & RTF_LOCAL)
-   rtm_addr(rt, RTM_NEWADDR, ifa);
+   rtm_addr(RTM_NEWADDR, ifa);
rtm_send(rt, RTM_ADD, 0, rtableid);
rtfree(rt);
}
@@ -1159,7 +1159,7 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct sockaddr 
*dst)
if (error == 0) {
rtm_send(rt, RTM_DELETE, 0, rtableid);
if (flags & RTF_LOCAL)
-   rtm_addr(rt, RTM_DELADDR, ifa);
+   rtm_addr(RTM_DELADDR, ifa);
rtfree(rt);
}
m_free(m);
diff --git net/route.h net/route.h
index 9f5459a9a62..3c89348cb43 100644
--- net/route.h
+++ net/route.h
@@ -427,7 +427,7 @@ void rt_maskedcopy(struct sockaddr *,
struct sockaddr *, struct sockaddr *);
 struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
 voidrtm_send(struct rtentry *, int, int, unsigned int);
-voidrtm_addr(struct rtentry *, int, struct ifaddr *);
+voidrtm_addr(int, struct ifaddr *);
 voidrtm_miss(int, struct rt_addrinfo *, int, uint8_t, u_int, int, u_int);
 int rt_setgate(struct rtentry *, struct sockaddr *, u_int);
 struct rtentry *rt_getll(struct rtentry *);
diff --git net/rtsock.c net/rtsock.c
index eb570e25698..c5590378259 100644
--- net/rtsock.c
+++ net/rtsock.c
@@ -1509,7 +1509,7 @@ rtm_ifchg(struct ifnet *ifp)
  * copies of it.
  */
 void
-rtm_addr(struct rtentry *rt, int cmd, struct ifaddr *ifa)
+rtm_addr(int cmd, struct ifaddr *ifa)
 {
struct ifnet*ifp = ifa->ifa_ifp;
struct mbuf *m;


-- 
I'm not entirely sure you are real.



Re: remove unused rtentry parameter from rtm_addr()

2018-04-18 Thread Alexander Bluhm
On Wed, Apr 18, 2018 at 05:03:04PM +0200, Florian Obser wrote:
> @@ -1158,9 +1158,9 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct 
> sockaddr *dst)
>   error = rtrequest_delete(, prio, ifp, , rtableid);
>   if (error == 0) {
>   rtm_send(rt, RTM_DELETE, 0, rtableid);
> - if (flags & RTF_LOCAL)
> - rtm_addr(rt, RTM_DELADDR, ifa);
>   rtfree(rt);
> + if (flags & RTF_LOCAL)
> + rtm_addr(RTM_DELADDR, ifa);
>   }
>   m_free(m);
>  

Why do you change the order of rtfree() and rtm_addr()?

Have you checked that the rt->rt_ifa is not holding the last reference
to ifa?  Otherwise the ifafree() in rtfree() could free it.

bluhm



Re: remove unused rtentry parameter from rtm_addr()

2018-04-18 Thread Klemens Nanni
On Wed, Apr 18, 2018 at 05:03:04PM +0200, Florian Obser wrote:
> some dude commited it like this in '95.
It used to be used until mpi@ started passing ifa:

"Pass the configured ``ifa'' to rt_sendaddrmsg() instead of
getting it via ``rt->rt_ifa'' later"

http://cvsweb.openbsd.org/cgi-bin/cvsweb/src/sys/net/rtsock.c.diff?r1=1.191=1.192

> OK?
OK kn



remove unused rtentry parameter from rtm_addr()

2018-04-18 Thread Florian Obser
some dude commited it like this in '95.

I came accress it because I want to use it in a place where I don't
have a rtentry allocated already.

OK?

diff --git net/route.c net/route.c
index 30c8def301d..a0c5738d831 100644
--- net/route.c
+++ net/route.c
@@ -1103,7 +1103,7 @@ rt_ifa_add(struct ifaddr *ifa, int flags, struct sockaddr 
*dst)
 * userland that a new address has been added.
 */
if (flags & RTF_LOCAL)
-   rtm_addr(rt, RTM_NEWADDR, ifa);
+   rtm_addr(RTM_NEWADDR, ifa);
rtm_send(rt, RTM_ADD, 0, rtableid);
rtfree(rt);
}
@@ -1158,9 +1158,9 @@ rt_ifa_del(struct ifaddr *ifa, int flags, struct sockaddr 
*dst)
error = rtrequest_delete(, prio, ifp, , rtableid);
if (error == 0) {
rtm_send(rt, RTM_DELETE, 0, rtableid);
-   if (flags & RTF_LOCAL)
-   rtm_addr(rt, RTM_DELADDR, ifa);
rtfree(rt);
+   if (flags & RTF_LOCAL)
+   rtm_addr(RTM_DELADDR, ifa);
}
m_free(m);
 
diff --git net/route.h net/route.h
index 9f5459a9a62..3c89348cb43 100644
--- net/route.h
+++ net/route.h
@@ -427,7 +427,7 @@ void rt_maskedcopy(struct sockaddr *,
struct sockaddr *, struct sockaddr *);
 struct sockaddr *rt_plen2mask(struct rtentry *, struct sockaddr_in6 *);
 voidrtm_send(struct rtentry *, int, int, unsigned int);
-voidrtm_addr(struct rtentry *, int, struct ifaddr *);
+voidrtm_addr(int, struct ifaddr *);
 voidrtm_miss(int, struct rt_addrinfo *, int, uint8_t, u_int, int, u_int);
 int rt_setgate(struct rtentry *, struct sockaddr *, u_int);
 struct rtentry *rt_getll(struct rtentry *);
diff --git net/rtsock.c net/rtsock.c
index eb570e25698..c5590378259 100644
--- net/rtsock.c
+++ net/rtsock.c
@@ -1509,7 +1509,7 @@ rtm_ifchg(struct ifnet *ifp)
  * copies of it.
  */
 void
-rtm_addr(struct rtentry *rt, int cmd, struct ifaddr *ifa)
+rtm_addr(int cmd, struct ifaddr *ifa)
 {
struct ifnet*ifp = ifa->ifa_ifp;
struct mbuf *m;

-- 
I'm not entirely sure you are real.