From owner-freebsd-net@freebsd.org Tue May 3 20:50:38 2016 Return-Path: Delivered-To: freebsd-net@mailman.ysv.freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:1900:2254:206a::19:1]) by mailman.ysv.freebsd.org (Postfix) with ESMTP id 6A801B2C295 for ; Tue, 3 May 2016 20:50:38 +0000 (UTC) (envelope-from victor.toni@gmail.com) Received: from mail-lf0-x22b.google.com (mail-lf0-x22b.google.com [IPv6:2a00:1450:4010:c07::22b]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (Client CN "smtp.gmail.com", Issuer "Google Internet Authority G2" (verified OK)) by mx1.freebsd.org (Postfix) with ESMTPS id C559A13B4 for ; Tue, 3 May 2016 20:50:37 +0000 (UTC) (envelope-from victor.toni@gmail.com) Received: by mail-lf0-x22b.google.com with SMTP id m64so36767518lfd.1 for ; Tue, 03 May 2016 13:50:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to; bh=6cwnqH48pjEdyP3TQ2fVHXmicb5bbNNz2eLMhwapJBU=; b=lxuWYixKVkHBX90VMK0kdaIex2dnJtguu2SL3DV4AN6QQ7sinRCI18YUmdTKZipBH8 +SKfzPLSmZRmNwQTRyTm70GREjaMxBbxo9v1xxyvBPl+kd4wJFq0s2gYDwN8ovQLEUd7 GsmcIEBeT5dZhRUVdZ0i0zcm845NjCRaakTMdiVZYfzrgr70ZrzfwfgQp4YzQTB4/dGB IcaNAek/F+1o3qlOwYZoLj6MiLQ7nZrlE0S+vfU1gPWqIz97GwGGqGLUIt4vFRn/kTOp udp+OUkR8ggpBiz2LffEAdWMB4/bzVEKHIXPy87CgOeCVsxCvsPo/JEaf5HNhJ9UsYWT NBjQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=6cwnqH48pjEdyP3TQ2fVHXmicb5bbNNz2eLMhwapJBU=; b=c6EwaUEjhiKI3ds4sWM5KJMvncjq9qXvZ8Ibc8R/J477z+agAPc3K1jsVeW5rgwqUY 5TizzEI9GczeadKjpQOtIpzrRwDoaVPieQU/odnGzUHBf1yMXJRlDiQUKS+Bg9uTGdDZ v+sL0Iodg53UemvrdU3c96R/8BMeARYdLjHb+Sk/NuxLP0vFmWPoLzlKWKEf9+yO4Myw Jmc9zGZ34Mu7eDYonRMVN2JdkIfG9NBiDkRk8aI9naRUt+p9/+JaFeBhwyOf48VIY4/m VXEyt9QOPXarU+PFYBcFgFBuvVfKXC5lGoYiZJClNfoP7UytSXrgAILKKmY9jqRKaHnf fbBw== X-Gm-Message-State: AOPr4FXIOZRyrzfvYTgpXwaiYGlY1GIB0oPaH3t1SMSi9bv1FPwzxYl2eewSl33JZ16F5r/Gt+sT9iKB9NYVKw== X-Received: by 10.112.147.225 with SMTP id tn1mr2197856lbb.98.1462308636048; Tue, 03 May 2016 13:50:36 -0700 (PDT) MIME-Version: 1.0 Received: by 10.112.20.194 with HTTP; Tue, 3 May 2016 13:50:06 -0700 (PDT) From: Victor Toni Date: Tue, 3 May 2016 22:50:06 +0200 Message-ID: Subject: setsourcefilter/getsourcefilter missing const qualifier? To: freebsd-net@freebsd.org Content-Type: text/plain; charset=UTF-8 X-Content-Filtered-By: Mailman/MimeDel 2.1.22 X-BeenThere: freebsd-net@freebsd.org X-Mailman-Version: 2.1.22 Precedence: list List-Id: Networking and TCP/IP with FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Tue, 03 May 2016 20:50:38 -0000 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 /* Get source filter. */617 *extern* *int* getsourcefilter (*int* __s , uint32_t __interface_addr ,618 *const* *struct* sockaddr *__group ,619 socklen_t __grouplen , uint32_t *__fmode ,620 uint32_t *__numsrc ,621 *struct* sockaddr_storage *__slist ) __THROW ;622 623 /* Set source filter. */624 *extern* *int* setsourcefilter (*int* __s , uint32_t __interface_addr ,625 *const* *struct* sockaddr *__group ,626 socklen_t __grouplen , uint32_t __fmode ,627 uint32_t __numsrc ,628 *const* *struct* sockaddr_storage *__slist ) __THROW ; and the FreeBSD version http://code.metager.de/source/xref/freebsd/sys/netinet/in.h#593 593 *int* setsourcefilter (*int*, uint32_t , *struct* sockaddr *, socklen_t ,594 uint32_t , uint32_t , *struct* sockaddr_storage *);595 *int* getsourcefilter (*int*, uint32_t , *struct* sockaddr *, socklen_t ,596 uint32_t *, uint32_t *, *struct* sockaddr_storage *); 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