diff options
Diffstat (limited to 'lib')
-rw-r--r-- | lib/sockopt.c | 13 | ||||
-rw-r--r-- | lib/sockopt.h | 1 |
2 files changed, 13 insertions, 1 deletions
diff --git a/lib/sockopt.c b/lib/sockopt.c index 9ff15ca6..63858408 100644 --- a/lib/sockopt.c +++ b/lib/sockopt.c @@ -179,8 +179,19 @@ getsockopt_ipv6_ifindex (struct msghdr *msgh) return pktinfo->ipi6_ifindex; } -#endif /* HAVE_IPV6 */ +int +setsockopt_ipv6_tclass(int sock, int tclass) +{ + int ret; + + ret = setsockopt (sock, IPPROTO_IPV6, IPV6_TCLASS, &tclass, sizeof (tclass)); + if (ret < 0) + zlog_warn ("Can't set IPV6_TCLASS option for fd %d to %#x: %s", + sock, tclass, safe_strerror(errno)); + return ret; +} +#endif /* HAVE_IPV6 */ /* * Process multicast socket options for IPv4 in an OS-dependent manner. diff --git a/lib/sockopt.h b/lib/sockopt.h index 69309e00..aced6d48 100644 --- a/lib/sockopt.h +++ b/lib/sockopt.h @@ -35,6 +35,7 @@ extern int setsockopt_ipv6_multicast_hops (int, int); extern int setsockopt_ipv6_unicast_hops (int, int); extern int setsockopt_ipv6_hoplimit (int, int); extern int setsockopt_ipv6_multicast_loop (int, int); +extern int setsockopt_ipv6_tclass (int, int); #endif /* HAVE_IPV6 */ /* |