[radvd-devel-l] [PATCH] netlink.c: Fix build failure when NETLINK_NO_ENOBUFS is not defined
Reuben Hawkins
reubenhwk at gmail.com
Mon Sep 9 08:47:19 EDT 2013
Hi Sedat,
Your patch is integrated in the 1.9.4rc1 branch in git. Please test.
https://github.com/reubenhwk/radvd/tree/1.9.4rc1
Thanks,
Reuben
On Mon, Aug 12, 2013 at 10:02 AM, Sedat Dilek <sedat.dilek at gmail.com> wrote:
> On Mon, Aug 12, 2013 at 4:44 PM, Reuben Hawkins <reubenhwk at gmail.com>
> wrote:
> > Hi Sedat,
> >
> > The change looks good. I haven't tested it yet, but when I get a chance
> to
> > test I doubt I'll find any reason to not merge the change.
> >
> > I'll make a new release in a few weeks with the change.
> >
>
> Good news!
>
> - Sedat -
>
> > Thanks,
> > Reuben
> >
> >
> > On Wed, Aug 7, 2013 at 6:12 PM, Sedat Dilek <sedat.dilek at gmail.com>
> wrote:
> >>
> >> My build with radvd-1.9.3 and the Freetz build-system breaks with a
> >> Linux-kernel v2.6.13.1 like this:
> >>
> >> netlink.c: In function 'netlink_socket':
> >> netlink.c:84:41: error: 'NETLINK_NO_ENOBUFS' undeclared (first use in
> >> this function)
> >> netlink.c:84:41: note: each undeclared identifier is reported only
> >> once for each function it appears in
> >> make[2]: *** [netlink.o] Error 1
> >>
> >> This is obvious as my kernel-sources have no "NETLINK_NO_ENOBUFS"
> >> definition
> >> in "include/linux/netlink.h".
> >>
> >> The culprit is the else-if line here:
> >>
> >> [ netlink.c ]
> >>
> >> int netlink_socket(void)
> >> {
> >> ...
> >> if (sock == -1) {
> >> flog(LOG_ERR, "Unable to open netlink socket: %s",
> >> strerror(errno));
> >> }
> >> else if (setsockopt(sock, SOL_NETLINK, NETLINK_NO_ENOBUFS, &val,
> >> sizeof(val)) < 0 ) {
> >> flog(LOG_ERR, "Unable to setsockopt NETLINK_NO_ENOBUFS:
> >> %s", strerror(errno));
> >> }
> >> ...
> >>
> >> The NETLINK_NO_ENOBUFS socket flag was first introduced with
> Linux-kernel
> >> v2.6.29-rc7:
> >>
> >> commit 38938bfe3489394e2eed5e40c9bb8f66a2ce1405
> >> "netlink: add NETLINK_NO_ENOBUFS socket flag"
> >>
> >> The issue in radvd was introduced with:
> >>
> >> commit de9a8849258b2a6a125d686dcb9c424affad354d
> >> "setsockopt NETLINK_NO_ENOBUFS"
> >>
> >> I have added extra checks for SOL_NETLINK and NETLINK_NO_ENOBUFS
> >> definitions
> >> which fixes the issue for me.
> >>
> >> NOTE: Compile-tested only!
> >> Signed-off-by: Sedat Dilek <sedat.dilek at gmail.com>
> >> ---
> >> netlink.c | 2 ++
> >> 1 file changed, 2 insertions(+)
> >>
> >> diff --git a/netlink.c b/netlink.c
> >> index a37ccad..d405731 100644
> >> --- a/netlink.c
> >> +++ b/netlink.c
> >> @@ -81,9 +81,11 @@ int netlink_socket(void)
> >> if (sock == -1) {
> >> flog(LOG_ERR, "Unable to open netlink socket: %s",
> >> strerror(errno));
> >> }
> >> +#if defined SOL_NETLINK && defined NETLINK_NO_ENOBUFS
> >> else if (setsockopt(sock, SOL_NETLINK, NETLINK_NO_ENOBUFS, &val,
> >> sizeof(val)) < 0 ) {
> >> flog(LOG_ERR, "Unable to setsockopt NETLINK_NO_ENOBUFS:
> >> %s", strerror(errno));
> >> }
> >> +#endif
> >>
> >> memset(&snl, 0, sizeof(snl));
> >> snl.nl_family = AF_NETLINK;
> >> --
> >> 1.8.3.4
> >>
> >
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.litech.org/pipermail/radvd-devel-l/attachments/20130909/52bf722c/attachment.html>
More information about the radvd-devel-l
mailing list