diff options
Diffstat (limited to 'inet')
-rw-r--r-- | inet/Makefile | 4 | ||||
-rw-r--r-- | inet/Versions | 4 | ||||
-rw-r--r-- | inet/netinet/in.h | 40 |
3 files changed, 41 insertions, 7 deletions
diff --git a/inet/Makefile b/inet/Makefile index 7367d9cf01..0fdf9e33e4 100644 --- a/inet/Makefile +++ b/inet/Makefile @@ -45,7 +45,9 @@ routines := htonl htons \ rcmd rexec ruserpass \ getnetgrent_r getnetgrent \ getaliasent_r getaliasent getaliasname getaliasname_r \ - in6_addr getnameinfo if_index ifaddrs inet6_option + in6_addr getnameinfo if_index ifaddrs inet6_option \ + getipv4sourcefilter setipv4sourcefilter \ + getsourcefilter setsourcefilter aux := check_pf ifreq diff --git a/inet/Versions b/inet/Versions index 67bd0ed5b0..2b7ec901ff 100644 --- a/inet/Versions +++ b/inet/Versions @@ -74,6 +74,10 @@ libc { inet6_option_space; inet6_option_init; inet6_option_append; inet6_option_alloc; inet6_option_next; inet6_option_find; } + GLIBC_2.3.4 { + getipv4sourcefilter; setipv4sourcefilter; + getsourcefilter; setsourcefilter; + } GLIBC_PRIVATE { # functions used in other libraries __internal_endnetgrent; __internal_getnetgrent_r; diff --git a/inet/netinet/in.h b/inet/netinet/in.h index 6aee842530..bdf4e5dc2c 100644 --- a/inet/netinet/in.h +++ b/inet/netinet/in.h @@ -417,18 +417,46 @@ struct in6_pktinfo #ifdef __USE_GNU /* Hop-by-Hop and Destination Options Processing. */ -extern int inet6_option_space (int __nbytes); +extern int inet6_option_space (int __nbytes) __THROW; extern int inet6_option_init (void *__bp, struct cmsghdr **__cmsgp, - int __type); + int __type) __THROW; extern int inet6_option_append (struct cmsghdr *__cmsg, __const uint8_t *__typep, int __multx, - int __plusy); + int __plusy) __THROW; extern uint8_t *inet6_option_alloc (struct cmsghdr *__cmsg, int __datalen, - int __multx, int __plusy); + int __multx, int __plusy) __THROW; extern int inet6_option_next (__const struct cmsghdr *__cmsg, - uint8_t **__tptrp); + uint8_t **__tptrp) __THROW; extern int inet6_option_find (__const struct cmsghdr *__cmsg, - uint8_t **__tptrp, int __type); + uint8_t **__tptrp, int __type) __THROW; + + +/* Multicast source filter support. */ + +/* Get IPv4 source filter. */ +extern int getipv4sourcefilter (int __s, struct in_addr __interface, + struct in_addr __group, uint32_t *__fmode, + uint32_t *__numsrc, struct in_addr *__slist) + __THROW; + +/* Set IPv4 source filter. */ +extern int setipv4sourcefilter (int __s, struct in_addr __interface, + struct in_addr __group, uint32_t __fmode, + uint32_t __numsrc, struct in_addr *__slist) + __THROW; + + +/* Get source filter. */ +extern int getsourcefilter (int __s, uint32_t __interface, + struct sockaddr *__group, socklen_t __grouplen, + uint32_t *__fmode, uint32_t *__numsrc, + struct sockaddr_storage *__slist) __THROW; + +/* Set source filter. */ +extern int setsourcefilter (int __s, uint32_t __interface, + struct sockaddr *__group, socklen_t __grouplen, + uint32_t __fmode, uint32_t __numsrc, + struct sockaddr_storage *__slist) __THROW; #endif /* use GNU */ __END_DECLS |