diff --git a/sysdep/linux/sysio.h b/sysdep/linux/sysio.h index e21ff48..0c83965 100644 --- a/sysdep/linux/sysio.h +++ b/sysdep/linux/sysio.h @@ -30,7 +30,19 @@ struct tcp_md5sig_ext { /* Linux does not care if sa_len is larger than needed */ -#define SA_LEN(x) sizeof(sockaddr) +/* But VPP care */ +static inline int +SA_LEN(sockaddr x){ + struct sockaddr_in *sa = (struct sockaddr_in*)&x; + short af = sa->sin_family; + //printf("AF=%hu\n",af); + if (af == AF_INET){ + return sizeof(struct sockaddr_in); + }else if (af == AF_INET6){ + return sizeof(struct sockaddr_in6); + } + return 32; +}; /* diff --git a/sysdep/unix/io.c b/sysdep/unix/io.c index 3d67d0a..b7f3930 100644 --- a/sysdep/unix/io.c +++ b/sysdep/unix/io.c @@ -431,36 +431,28 @@ sk_prepare_cmsgs6(sock *s, struct msghdr *msg, void *cbuf, size_t cbuflen) static inline int sk_set_ttl4(sock *s, int ttl) { - if (setsockopt(s->fd, SOL_IP, IP_TTL, &ttl, sizeof(ttl)) < 0) - ERR("IP_TTL"); - + // Doesn't support by VPP Host Stack return 0; } static inline int sk_set_ttl6(sock *s, int ttl) { - if (setsockopt(s->fd, SOL_IPV6, IPV6_UNICAST_HOPS, &ttl, sizeof(ttl)) < 0) - ERR("IPV6_UNICAST_HOPS"); - + // Doesn't support by VPP Host Stack return 0; } static inline int sk_set_tos4(sock *s, int tos) { - if (setsockopt(s->fd, SOL_IP, IP_TOS, &tos, sizeof(tos)) < 0) - ERR("IP_TOS"); - + // Doesn't support by VPP Host Stack return 0; } static inline int sk_set_tos6(sock *s, int tos) { - if (setsockopt(s->fd, SOL_IPV6, IPV6_TCLASS, &tos, sizeof(tos)) < 0) - ERR("IPV6_TCLASS"); - + // Doesn't support by VPP Host Stack return 0; }