Date: Tue, 3 May 2016 22:50:06 +0200 From: Victor Toni <victor.toni@gmail.com> To: freebsd-net@freebsd.org Subject: <netinet/in.h> setsourcefilter/getsourcefilter missing const qualifier? Message-ID: <CAG0OSgek6hN-yUV8aQZYtAHmo1o0k_AYTQmertOhW1rrc5jQHw@mail.gmail.com>
next in thread | raw e-mail | index | archive | help
When trying to compile some linux-originated code on FreeBSD I get the following errors: /usr/include/netinet/in.h:585:5: note: candidate function not viable: 3rd argument ('const sockaddr *') would lose const qualifier int setsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, ^ /usr/include/netinet/in.h:587:5: note: candidate function not viable: 3rd argument ('const sockaddr *') would lose const qualifier int getsourcefilter(int, uint32_t, struct sockaddr *, socklen_t, ^ Looking at the linux version of these funtions: http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#616 616 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#616>/* Get source filter. */617 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#617>*extern* *int* getsourcefilter <http://code.metager.de/source/s?defs=getsourcefilter&project=gnu> (*int* __s <http://code.metager.de/source/s?defs=__s&project=gnu>, uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> __interface_addr <http://code.metager.de/source/s?defs=__interface_addr&project=gnu>,618 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#618> *const* *struct* sockaddr <http://code.metager.de/source/s?defs=sockaddr&project=gnu> *__group <http://code.metager.de/source/s?defs=__group&project=gnu>,619 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#619> socklen_t <http://code.metager.de/source/s?defs=socklen_t&project=gnu> __grouplen <http://code.metager.de/source/s?defs=__grouplen&project=gnu>, uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> *__fmode <http://code.metager.de/source/s?defs=__fmode&project=gnu>,620 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#620> uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> *__numsrc <http://code.metager.de/source/s?defs=__numsrc&project=gnu>,621 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#621> *struct* sockaddr_storage <http://code.metager.de/source/s?defs=sockaddr_storage&project=gnu> *__slist <http://code.metager.de/source/s?defs=__slist&project=gnu>) __THROW <http://code.metager.de/source/s?defs=__THROW&project=gnu>;622 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#622>623 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#623>/* Set source filter. */624 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#624>*extern* *int* setsourcefilter <http://code.metager.de/source/s?defs=setsourcefilter&project=gnu> (*int* __s <http://code.metager.de/source/s?defs=__s&project=gnu>, uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> __interface_addr <http://code.metager.de/source/s?defs=__interface_addr&project=gnu>,625 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#625> *const* *struct* sockaddr <http://code.metager.de/source/s?defs=sockaddr&project=gnu> *__group <http://code.metager.de/source/s?defs=__group&project=gnu>,626 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#626> socklen_t <http://code.metager.de/source/s?defs=socklen_t&project=gnu> __grouplen <http://code.metager.de/source/s?defs=__grouplen&project=gnu>, uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> __fmode <http://code.metager.de/source/s?defs=__fmode&project=gnu>,627 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#627> uint32_t <http://code.metager.de/source/s?defs=uint32_t&project=gnu> __numsrc <http://code.metager.de/source/s?defs=__numsrc&project=gnu>,628 <http://code.metager.de/source/xref/gnu/glibc/inet/netinet/in.h#628> *const* *struct* sockaddr_storage <http://code.metager.de/source/s?defs=sockaddr_storage&project=gnu> *__slist <http://code.metager.de/source/s?defs=__slist&project=gnu>) __THROW <http://code.metager.de/source/s?defs=__THROW&project=gnu>; and the FreeBSD version http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#593 593 <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#593>*int* setsourcefilter <http://code.metager.de/source/s?defs=setsourcefilter&project=freebsd>(*int*, uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t>, *struct* sockaddr <http://code.metager.de/source/s?defs=sockaddr&project=freebsd> *, socklen_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#socklen_t>,594 <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#594> uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t>, uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t>, *struct* sockaddr_storage <http://code.metager.de/source/s?defs=sockaddr_storage&project=freebsd> *);595 <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#595>*int* getsourcefilter <http://code.metager.de/source/s?defs=getsourcefilter&project=freebsd>(*int*, uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t>, *struct* sockaddr <http://code.metager.de/source/s?defs=sockaddr&project=freebsd> *, socklen_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#socklen_t>,596 <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#596> uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t> *, uint32_t <http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#uint32_t> *, *struct* sockaddr_storage <http://code.metager.de/source/s?defs=sockaddr_storage&project=freebsd> *); the main difference is that the linux version makes guarantees about the parameters. (I know that the line numbers for don't match for the error given, it's for example only) Wouldn't it be safe for the FreeBSD version to make the same assumption? Best regards, Victor
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CAG0OSgek6hN-yUV8aQZYtAHmo1o0k_AYTQmertOhW1rrc5jQHw>