On 10/09/15(Thu) 21:18, Claudio Jeker wrote:
> in6_embedscope() needs to lose some weight. Remove the last argument.
> In all but two calls NULL is passed and in the other 2 cases the ifp
> is only used to maybe feed it to in6_selecthlim() to select the hoplimit
> for the link. Since in6_embedscope() only works on link-local addresses 
> it does not matter what hop limit we select since the destination is
> directly reachable. This makes our lives a lot easier.
> 
> OK?

ok mpi@

> -- 
> :wq Claudio
> 
> Index: net/pfkeyv2_convert.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pfkeyv2_convert.c,v
> retrieving revision 1.54
> diff -u -p -r1.54 pfkeyv2_convert.c
> --- net/pfkeyv2_convert.c     11 Jun 2015 15:59:17 -0000      1.54
> +++ net/pfkeyv2_convert.c     10 Sep 2015 19:12:38 -0000
> @@ -483,9 +483,9 @@ import_flow(struct sockaddr_encap *flow,
>  #ifdef INET6
>       case AF_INET6:
>               in6_embedscope(&src->sin6.sin6_addr, &src->sin6,
> -                 NULL, NULL);
> +                 NULL);
>               in6_embedscope(&dst->sin6.sin6_addr, &dst->sin6,
> -                 NULL, NULL);
> +                 NULL);
>  
>               /* netmask handling */
>               rt_maskedcopy(&src->sa, &src->sa, &srcmask->sa);
> Index: net/pipex.c
> ===================================================================
> RCS file: /cvs/src/sys/net/pipex.c,v
> retrieving revision 1.76
> diff -u -p -r1.76 pipex.c
> --- net/pipex.c       10 Sep 2015 17:52:05 -0000      1.76
> +++ net/pipex.c       10 Sep 2015 19:12:38 -0000
> @@ -1976,7 +1976,7 @@ pipex_l2tp_output(struct mbuf *m0, struc
>               ip6->ip6_nxt = IPPROTO_UDP;
>               ip6->ip6_src = session->local.sin6.sin6_addr;
>               (void)in6_embedscope(&ip6->ip6_dst,
> -                 &session->peer.sin6, NULL, NULL);
> +                 &session->peer.sin6, NULL);
>               /* ip6->ip6_plen will be filled in ip6_output. */
>  
>               if (ip6_output(m0, NULL, NULL, 0, NULL, NULL, NULL) != 0) {
> Index: netinet/ip_ipip.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/ip_ipip.c,v
> retrieving revision 1.66
> diff -u -p -r1.66 ip_ipip.c
> --- netinet/ip_ipip.c 9 Sep 2015 20:19:26 -0000       1.66
> +++ netinet/ip_ipip.c 10 Sep 2015 19:12:38 -0000
> @@ -517,8 +517,8 @@ ipip_output(struct mbuf *m, struct tdb *
>               ip6o->ip6_vfc |= IPV6_VERSION;
>               ip6o->ip6_plen = htons(m->m_pkthdr.len - sizeof(*ip6o));
>               ip6o->ip6_hlim = ip_defttl;
> -             in6_embedscope(&ip6o->ip6_src, &tdb->tdb_src.sin6, NULL, NULL);
> -             in6_embedscope(&ip6o->ip6_dst, &tdb->tdb_dst.sin6, NULL, NULL);
> +             in6_embedscope(&ip6o->ip6_src, &tdb->tdb_src.sin6, NULL);
> +             in6_embedscope(&ip6o->ip6_dst, &tdb->tdb_dst.sin6, NULL);
>  
>               if (tp == IPVERSION) {
>                       /* Save ECN notification */
> Index: netinet/tcp_usrreq.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/tcp_usrreq.c,v
> retrieving revision 1.127
> diff -u -p -r1.127 tcp_usrreq.c
> --- netinet/tcp_usrreq.c      27 Aug 2015 17:10:45 -0000      1.127
> +++ netinet/tcp_usrreq.c      10 Sep 2015 19:12:38 -0000
> @@ -794,11 +794,11 @@ tcp_ident(void *oldp, size_t *oldlenp, v
>  #ifdef INET6
>       case AF_INET6:
>               fin6 = (struct sockaddr_in6 *)&tir.faddr;
> -             error = in6_embedscope(&f6, fin6, NULL, NULL);
> +             error = in6_embedscope(&f6, fin6, NULL);
>               if (error)
>                       return EINVAL;  /*?*/
>               lin6 = (struct sockaddr_in6 *)&tir.laddr;
> -             error = in6_embedscope(&l6, lin6, NULL, NULL);
> +             error = in6_embedscope(&l6, lin6, NULL);
>               if (error)
>                       return EINVAL;  /*?*/
>               break;
> Index: netinet/udp_usrreq.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet/udp_usrreq.c,v
> retrieving revision 1.206
> diff -u -p -r1.206 udp_usrreq.c
> --- netinet/udp_usrreq.c      10 Sep 2015 17:52:05 -0000      1.206
> +++ netinet/udp_usrreq.c      10 Sep 2015 19:12:38 -0000
> @@ -742,7 +742,7 @@ udp6_ctlinput(int cmd, struct sockaddr *
>               cmdarg = NULL;
>               /* XXX: translate addresses into internal form */
>               sa6 = *satosin6(sa);
> -             if (in6_embedscope(&sa6.sin6_addr, &sa6, NULL, NULL)) {
> +             if (in6_embedscope(&sa6.sin6_addr, &sa6, NULL)) {
>                       /* should be impossible */
>                       return;
>               }
> @@ -756,14 +756,14 @@ udp6_ctlinput(int cmd, struct sockaddr *
>               /* XXX: assuming M is valid in this case */
>               sa6.sin6_scope_id = in6_addr2scopeid(m->m_pkthdr.ph_ifidx,
>                   ip6cp->ip6c_finaldst);
> -             if (in6_embedscope(ip6cp->ip6c_finaldst, &sa6, NULL, NULL)) {
> +             if (in6_embedscope(ip6cp->ip6c_finaldst, &sa6, NULL)) {
>                       /* should be impossible */
>                       return;
>               }
>       } else {
>               /* XXX: translate addresses into internal form */
>               sa6 = *satosin6(sa);
> -             if (in6_embedscope(&sa6.sin6_addr, &sa6, NULL, NULL)) {
> +             if (in6_embedscope(&sa6.sin6_addr, &sa6, NULL)) {
>                       /* should be impossible */
>                       return;
>               }
> @@ -789,7 +789,7 @@ udp6_ctlinput(int cmd, struct sockaddr *
>               sa6_src.sin6_addr = ip6->ip6_src;
>               sa6_src.sin6_scope_id = in6_addr2scopeid(m->m_pkthdr.ph_ifidx,
>                   &ip6->ip6_src);
> -             if (in6_embedscope(&sa6_src.sin6_addr, &sa6_src, NULL, NULL)) {
> +             if (in6_embedscope(&sa6_src.sin6_addr, &sa6_src, NULL)) {
>                       /* should be impossible */
>                       return;
>               }
> Index: netinet6/icmp6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/icmp6.c,v
> retrieving revision 1.165
> diff -u -p -r1.165 icmp6.c
> --- netinet6/icmp6.c  10 Sep 2015 17:52:05 -0000      1.165
> +++ netinet6/icmp6.c  10 Sep 2015 19:12:38 -0000
> @@ -908,8 +908,7 @@ icmp6_notify_error(struct mbuf *m, int o
>                       icmp6dst.sin6_addr = *finaldst;
>               icmp6dst.sin6_scope_id = in6_addr2scopeid(m->m_pkthdr.ph_ifidx,
>                   &icmp6dst.sin6_addr);
> -             if (in6_embedscope(&icmp6dst.sin6_addr, &icmp6dst,
> -                                NULL, NULL)) {
> +             if (in6_embedscope(&icmp6dst.sin6_addr, &icmp6dst, NULL)) {
>                       /* should be impossbile */
>                       nd6log((LOG_DEBUG,
>                           "icmp6_notify_error: in6_embedscope failed\n"));
> @@ -926,8 +925,7 @@ icmp6_notify_error(struct mbuf *m, int o
>               icmp6src.sin6_addr = eip6->ip6_src;
>               icmp6src.sin6_scope_id = in6_addr2scopeid(m->m_pkthdr.ph_ifidx,
>                   &icmp6src.sin6_addr);
> -             if (in6_embedscope(&icmp6src.sin6_addr, &icmp6src,
> -                                NULL, NULL)) {
> +             if (in6_embedscope(&icmp6src.sin6_addr, &icmp6src, NULL)) {
>                       /* should be impossbile */
>                       nd6log((LOG_DEBUG,
>                           "icmp6_notify_error: in6_embedscope failed\n"));
> @@ -1217,13 +1215,13 @@ icmp6_reflect(struct mbuf *m, size_t off
>       sa6_src.sin6_len = sizeof(sa6_src);
>       sa6_src.sin6_addr = ip6->ip6_dst;
>       in6_recoverscope(&sa6_src, &ip6->ip6_dst);
> -     in6_embedscope(&ip6->ip6_dst, &sa6_src, NULL, NULL);
> +     in6_embedscope(&ip6->ip6_dst, &sa6_src, NULL);
>       bzero(&sa6_dst, sizeof(sa6_dst));
>       sa6_dst.sin6_family = AF_INET6;
>       sa6_dst.sin6_len = sizeof(sa6_dst);
>       sa6_dst.sin6_addr = t;
>       in6_recoverscope(&sa6_dst, &t);
> -     in6_embedscope(&t, &sa6_dst, NULL, NULL);
> +     in6_embedscope(&t, &sa6_dst, NULL);
>  
>       /*
>        * If the incoming packet was addressed directly to us (i.e. unicast),
> Index: netinet6/in6.h
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6.h,v
> retrieving revision 1.84
> diff -u -p -r1.84 in6.h
> --- netinet6/in6.h    10 Sep 2015 17:52:05 -0000      1.84
> +++ netinet6/in6.h    10 Sep 2015 19:12:38 -0000
> @@ -436,7 +436,7 @@ int       in6_mask2len(struct in6_addr *, u_ch
>  struct inpcb;
>  
>  int  in6_embedscope(struct in6_addr *, const struct sockaddr_in6 *,
> -         struct inpcb *, struct ifnet **);
> +         struct inpcb *);
>  void in6_recoverscope(struct sockaddr_in6 *, const struct in6_addr *);
>  void in6_clearscope(struct in6_addr *);
>  
> Index: netinet6/in6_pcb.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_pcb.c,v
> retrieving revision 1.71
> diff -u -p -r1.71 in6_pcb.c
> --- netinet6/in6_pcb.c        10 Sep 2015 17:52:05 -0000      1.71
> +++ netinet6/in6_pcb.c        10 Sep 2015 19:12:38 -0000
> @@ -194,7 +194,7 @@ in6_pcbbind(struct inpcb *inp, struct mb
>                       return EAFNOSUPPORT;
>  
>               /* KAME hack: embed scopeid */
> -             if (in6_embedscope(&sin6->sin6_addr, sin6, inp, NULL) != 0)
> +             if (in6_embedscope(&sin6->sin6_addr, sin6, inp) != 0)
>                       return EINVAL;
>               /* this must be cleared for ifa_ifwithaddr() */
>               sin6->sin6_scope_id = 0;
> @@ -418,7 +418,7 @@ in6_pcbconnect(struct inpcb *inp, struct
>       sin6 = &tmp;
>  
>       /* KAME hack: embed scopeid */
> -     if (in6_embedscope(&sin6->sin6_addr, sin6, inp, &ifp) != 0)
> +     if (in6_embedscope(&sin6->sin6_addr, sin6, inp) != 0)
>               return EINVAL;
>       /* this must be cleared for ifa_ifwithaddr() */
>       sin6->sin6_scope_id = 0;
> Index: netinet6/in6_src.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/in6_src.c,v
> retrieving revision 1.56
> diff -u -p -r1.56 in6_src.c
> --- netinet6/in6_src.c        10 Sep 2015 17:52:05 -0000      1.56
> +++ netinet6/in6_src.c        10 Sep 2015 19:12:38 -0000
> @@ -586,15 +586,13 @@ in6_selecthlim(struct inpcb *in6p, struc
>   */
>  int
>  in6_embedscope(struct in6_addr *in6, const struct sockaddr_in6 *sin6,
> -    struct inpcb *in6p, struct ifnet **ifpp)
> +    struct inpcb *in6p)
>  {
>       struct ifnet *ifp = NULL;
>       u_int32_t scopeid;
>  
>       *in6 = sin6->sin6_addr;
>       scopeid = sin6->sin6_scope_id;
> -     if (ifpp)
> -             *ifpp = NULL;
>  
>       /*
>        * don't try to read sin6->sin6_addr beyond here, since the caller may
> @@ -616,8 +614,8 @@ in6_embedscope(struct in6_addr *in6, con
>                               return ENXIO;  /* XXX EINVAL? */
>                       in6->s6_addr16[1] = htons(pi->ipi6_ifindex);
>               } else if (in6p && IN6_IS_ADDR_MULTICAST(in6) &&
> -                        in6p->inp_moptions6 &&
> -                        (ifp = if_get(in6p->inp_moptions6->im6o_ifidx))) {
> +                 in6p->inp_moptions6 &&
> +                 (ifp = if_get(in6p->inp_moptions6->im6o_ifidx))) {
>                       in6->s6_addr16[1] = htons(ifp->if_index);
>               } else if (scopeid) {
>                       ifp = if_get(scopeid);
> @@ -626,9 +624,7 @@ in6_embedscope(struct in6_addr *in6, con
>                       /*XXX assignment to 16bit from 32bit variable */
>                       in6->s6_addr16[1] = htons(scopeid & 0xffff);
>               }
> -
> -             if (ifpp)
> -                     *ifpp = ifp;
> +             if_put(ifp);
>       }
>  
>       return 0;
> Index: netinet6/raw_ip6.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/raw_ip6.c,v
> retrieving revision 1.82
> diff -u -p -r1.82 raw_ip6.c
> --- netinet6/raw_ip6.c        10 Sep 2015 17:52:05 -0000      1.82
> +++ netinet6/raw_ip6.c        10 Sep 2015 19:12:38 -0000
> @@ -402,7 +402,7 @@ rip6_output(struct mbuf *m, ...)
>       /* KAME hack: embed scopeid */
>       origoptp = in6p->inp_outputopts6;
>       in6p->inp_outputopts6 = optp;
> -     if (in6_embedscope(&ip6->ip6_dst, dstsock, in6p, &oifp) != 0) {
> +     if (in6_embedscope(&ip6->ip6_dst, dstsock, in6p) != 0) {
>               error = EINVAL;
>               goto bad;
>       }
> Index: netinet6/udp6_output.c
> ===================================================================
> RCS file: /cvs/src/sys/netinet6/udp6_output.c,v
> retrieving revision 1.35
> diff -u -p -r1.35 udp6_output.c
> --- netinet6/udp6_output.c    8 Jun 2015 22:19:28 -0000       1.35
> +++ netinet6/udp6_output.c    10 Sep 2015 19:12:38 -0000
> @@ -151,7 +151,7 @@ udp6_output(struct inpcb *in6p, struct m
>               fport = sin6->sin6_port; /* allow 0 port */
>  
>               /* KAME hack: embed scopeid */
> -             if (in6_embedscope(&sin6->sin6_addr, sin6, in6p, NULL) != 0) {
> +             if (in6_embedscope(&sin6->sin6_addr, sin6, in6p) != 0) {
>                       error = EINVAL;
>                       goto release;
>               }
> 

Reply via email to