diff --git a/src/api/sockets.c b/src/api/sockets.c index 7680a46a..6101c889 100644 --- a/src/api/sockets.c +++ b/src/api/sockets.c @@ -3083,7 +3083,7 @@ lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *opt LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, u8_t, NETCONN_UDP); *(u8_t *)optval = udp_get_multicast_ttl(sock->conn->pcb.udp); LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IP, IP_MULTICAST_TTL) = %d\n", - s, *(int *)optval)); + s, *(u8_t *)optval)); break; case IP_MULTICAST_IF: LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, struct in_addr, NETCONN_UDP); @@ -3180,6 +3180,12 @@ lwip_getsockopt_impl(int s, int level, int optname, void *optval, socklen_t *opt LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IPV6, IPV6_MULTICAST_IF) = %d\n", s, *(int *)optval)); break; + case IPV6_MULTICAST_HOPS: + LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, *optlen, u8_t, NETCONN_UDP); + *(u8_t *)optval = udp_get_multicast_ttl(sock->conn->pcb.udp); + LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IPV6, IPV6_MULTICAST_HOPS) = %d\n", + s, *(u8_t *)optval)); + break; #endif /* LWIP_MULTICAST_TX_OPTIONS && LWIP_UDP */ default: LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_getsockopt(%d, IPPROTO_IPV6, UNIMPL: optname=0x%x, ..)\n", @@ -3675,6 +3681,10 @@ lwip_setsockopt_impl(int s, int level, int optname, const void *optval, socklen_ LWIP_DEBUGF(SOCKETS_DEBUG, ("lwip_setsockopt(%d, IPPROTO_IPV6, IPV6_MULTICAST_IF, ..) -> %d\n", s, *(int *)optval)); break; + case IPV6_MULTICAST_HOPS: + LWIP_SOCKOPT_CHECK_OPTLEN_CONN_PCB_TYPE(sock, optlen, u8_t, NETCONN_UDP); + udp_set_multicast_ttl(sock->conn->pcb.udp, (u8_t)(*(const u8_t *)optval)); + break; #endif /* LWIP_MULTICAST_TX_OPTIONS && LWIP_UDP */ #if LWIP_IPV6_MLD case IPV6_JOIN_GROUP: diff --git a/src/include/lwip/sockets.h b/src/include/lwip/sockets.h index c01877aa..8d0534c2 100644 --- a/src/include/lwip/sockets.h +++ b/src/include/lwip/sockets.h @@ -319,6 +319,7 @@ struct linger { #define IP_MULTICAST_LOOP 7 #define IPV6_MULTICAST_IF 17 /* RFC3493: interface for outgoing multicast packets */ +#define IPV6_MULTICAST_HOPS 18 /* RFC3493: hop limit for outgoing multicast packets */ #endif /* LWIP_MULTICAST_TX_OPTIONS */ #if LWIP_IGMP