svn commit: r260488 - head/sys/net
Alexander V. Chernikov
melifaro at FreeBSD.org
Fri Jan 10 12:20:32 UTC 2014
On 10.01.2014 14:14, Gleb Smirnoff wrote:
> Alexander,
>
> some nitpicking:
>
> On Thu, Jan 09, 2014 at 06:13:25PM +0000, Alexander V. Chernikov wrote:
> A> @@ -52,6 +53,7 @@
> A> #include <sys/proc.h>
> A> #include <sys/domain.h>
> A> #include <sys/kernel.h>
> A> +#include <sys/kdb.h>
> A>
> A> #include <net/if.h>
> A> #include <net/if_var.h>
> A> @@ -86,6 +88,13 @@
> A> #define RT_NUMFIBS 1
> A> #endif
> A>
> A> +#if defined(INET) || defined(INET6)
> A> +#ifdef SCTP
> A> +extern void sctp_addr_change(struct ifaddr *ifa, int cmd);
> A> +#endif /* SCTP */
> A> +#endif
> A> +
> A> +
>
> Can be simplified to one liner:
>
> #if (defined(INET) || defined(INET6)) && defined(SCTP)
>
> Same stands for same ifdef down below in code.
>
> And extra empty line shouldn't have been added.
This actually needs to be removed from here and converted to be
ifaddr_event consumer.
>
> A> +
> A> +/*
> A> + * Announce interface address arrival/withdraw
> A> + * Returns 0 on success.
> A> + */
> A> +int
> A> +rt_addrmsg(int cmd, struct ifaddr *ifa, int fibnum)
> A> +{
> A> +
> A> + KASSERT(cmd == RTM_ADD || cmd == RTM_DELETE,
> A> + ("unexpected cmd %u", cmd));
> A> +
> A> + if (fibnum != RT_ALL_FIBS) {
> A> + KASSERT(fibnum >= 0 && fibnum < rt_numfibs, ("%s: "
> A> + "fibnum out of range 0 <= %d < %d", __func__,
> A> + fibnum, rt_numfibs));
> A> + }
> A> +
> A> + return (rtsock_addrmsg(cmd, ifa, fibnum));
> A> +}
>
> Second KASSERT together with if clause can be simplified to:
>
> KASSERT(fibnum == RT_ALL_FIBS || (fibnum >= 0 && fibnum < rt_numfibs), ...
>
> Same simplification can be done in rt_routemsg() and rt_newaddrmsg_fib().
Yes, thanks.
>
> A> +
> A> +/*
> A> + * Announce route addition/removal
> A> + * Users of this function MUST validate input data BEFORE calling.
> A> + * However we have to be able to handle invalid data:
> A> + * if some userland app sends us "invalid" route message (invalid mask,
> A> + * no dst, wrokg address families, etc...) we need to pass it back
> ^
> typo
Fixed.
>
> A> + * to app (and any other rtsock consumers) with rtm_errno field set to
> A> + * non-zero value.
> A> + * Returns 0 on success.
> A> + */
>
> A> +int
> A> +rtsock_routemsg(int cmd, struct ifnet *ifp, int error, struct rtentry *rt,
> A> + int fibnum)
> A> {
> A> + struct rt_addrinfo info;
> A> + struct sockaddr *sa;
> A> + struct mbuf *m;
> A> + struct rt_msghdr *rtm;
> A>
> A> - rt_newaddrmsg_fib(cmd, ifa, error, rt, RT_ALL_FIBS);
> A> + if (route_cb.any_count == 0)
> A> + return (0);
> A> +
> A> + bzero((caddr_t)&info, sizeof(info));
> A> + info.rti_info[RTAX_NETMASK] = rt_mask(rt);
> A> + info.rti_info[RTAX_DST] = sa = rt_key(rt);
> A> + info.rti_info[RTAX_GATEWAY] = rt->rt_gateway;
> A> + if ((m = rt_msg1(cmd, &info)) == NULL)
> A> + return (ENOBUFS);
> A> + rtm = mtod(m, struct rt_msghdr *);
> A> + rtm->rtm_index = ifp->if_index;
> A> + rtm->rtm_flags |= rt->rt_flags;
> A> + rtm->rtm_errno = error;
> A> + rtm->rtm_addrs = info.rti_addrs;
> A> +
> A> + if (fibnum != RT_ALL_FIBS) {
> A> + M_SETFIB(m, fibnum);
> A> + m->m_flags |= RTS_FILTER_FIB;
> A> + }
> A> +
> A> + rt_dispatch(m, sa ? sa->sa_family : AF_UNSPEC);
> A> +
> A> + return (0);
> A> }
> A>
> A> +
>
> Why extra line here?
Fixed.
>
> A> /*
> A> * This is the analogue to the rt_newaddrmsg which performs the same
> A> * function but for multicast group memberhips. This is easier since
>
More information about the svn-src-all
mailing list