af-packet: fix eBPF/XDP compilation

pull/10971/head
Victor Julien 11 months ago committed by Victor Julien
parent 68804b8c4b
commit 8698610b4a

@ -2210,13 +2210,13 @@ static int AFPBypassCallback(Packet *p)
} }
keys[0]->src = htonl(GET_IPV4_SRC_ADDR_U32(p)); keys[0]->src = htonl(GET_IPV4_SRC_ADDR_U32(p));
keys[0]->dst = htonl(GET_IPV4_DST_ADDR_U32(p)); keys[0]->dst = htonl(GET_IPV4_DST_ADDR_U32(p));
keys[0]->port16[0] = GET_TCP_SRC_PORT(p); keys[0]->port16[0] = p->sp;
keys[0]->port16[1] = GET_TCP_DST_PORT(p); keys[0]->port16[1] = p->dp;
keys[0]->vlan0 = p->vlan_id[0]; keys[0]->vlan0 = p->vlan_id[0];
keys[0]->vlan1 = p->vlan_id[1]; keys[0]->vlan1 = p->vlan_id[1];
keys[0]->vlan2 = p->vlan_id[2]; keys[0]->vlan2 = p->vlan_id[2];
if (IPV4_GET_IPPROTO(p) == IPPROTO_TCP) { if (p->proto == IPPROTO_TCP) {
keys[0]->ip_proto = 1; keys[0]->ip_proto = 1;
} else { } else {
keys[0]->ip_proto = 0; keys[0]->ip_proto = 0;
@ -2236,8 +2236,8 @@ static int AFPBypassCallback(Packet *p)
} }
keys[1]->src = htonl(GET_IPV4_DST_ADDR_U32(p)); keys[1]->src = htonl(GET_IPV4_DST_ADDR_U32(p));
keys[1]->dst = htonl(GET_IPV4_SRC_ADDR_U32(p)); keys[1]->dst = htonl(GET_IPV4_SRC_ADDR_U32(p));
keys[1]->port16[0] = GET_TCP_DST_PORT(p); keys[1]->port16[0] = p->dp;
keys[1]->port16[1] = GET_TCP_SRC_PORT(p); keys[1]->port16[1] = p->sp;
keys[1]->vlan0 = p->vlan_id[0]; keys[1]->vlan0 = p->vlan_id[0];
keys[1]->vlan1 = p->vlan_id[1]; keys[1]->vlan1 = p->vlan_id[1];
keys[1]->vlan2 = p->vlan_id[2]; keys[1]->vlan2 = p->vlan_id[2];
@ -2255,7 +2255,7 @@ static int AFPBypassCallback(Packet *p)
return AFPSetFlowStorage(p, p->afp_v.v4_map_fd, keys[0], keys[1], AF_INET); return AFPSetFlowStorage(p, p->afp_v.v4_map_fd, keys[0], keys[1], AF_INET);
} }
/* For IPv6 case we don't handle extended header in eBPF */ /* For IPv6 case we don't handle extended header in eBPF */
if (PacketIsIPv6(p) && ((IPV6_GET_NH(p) == IPPROTO_TCP) || (IPV6_GET_NH(p) == IPPROTO_UDP))) { if (PacketIsIPv6(p) && ((p->proto == IPPROTO_TCP) || (p->proto == IPPROTO_UDP))) {
int i; int i;
if (p->afp_v.v6_map_fd == -1) { if (p->afp_v.v6_map_fd == -1) {
return 0; return 0;
@ -2271,13 +2271,13 @@ static int AFPBypassCallback(Packet *p)
keys[0]->src[i] = ntohl(GET_IPV6_SRC_ADDR(p)[i]); keys[0]->src[i] = ntohl(GET_IPV6_SRC_ADDR(p)[i]);
keys[0]->dst[i] = ntohl(GET_IPV6_DST_ADDR(p)[i]); keys[0]->dst[i] = ntohl(GET_IPV6_DST_ADDR(p)[i]);
} }
keys[0]->port16[0] = GET_TCP_SRC_PORT(p); keys[0]->port16[0] = p->sp;
keys[0]->port16[1] = GET_TCP_DST_PORT(p); keys[0]->port16[1] = p->dp;
keys[0]->vlan0 = p->vlan_id[0]; keys[0]->vlan0 = p->vlan_id[0];
keys[0]->vlan1 = p->vlan_id[1]; keys[0]->vlan1 = p->vlan_id[1];
keys[0]->vlan2 = p->vlan_id[2]; keys[0]->vlan2 = p->vlan_id[2];
if (IPV6_GET_NH(p) == IPPROTO_TCP) { if (p->proto == IPPROTO_TCP) {
keys[0]->ip_proto = 1; keys[0]->ip_proto = 1;
} else { } else {
keys[0]->ip_proto = 0; keys[0]->ip_proto = 0;
@ -2299,8 +2299,8 @@ static int AFPBypassCallback(Packet *p)
keys[1]->src[i] = ntohl(GET_IPV6_DST_ADDR(p)[i]); keys[1]->src[i] = ntohl(GET_IPV6_DST_ADDR(p)[i]);
keys[1]->dst[i] = ntohl(GET_IPV6_SRC_ADDR(p)[i]); keys[1]->dst[i] = ntohl(GET_IPV6_SRC_ADDR(p)[i]);
} }
keys[1]->port16[0] = GET_TCP_DST_PORT(p); keys[1]->port16[0] = p->dp;
keys[1]->port16[1] = GET_TCP_SRC_PORT(p); keys[1]->port16[1] = p->sp;
keys[1]->vlan0 = p->vlan_id[0]; keys[1]->vlan0 = p->vlan_id[0];
keys[1]->vlan1 = p->vlan_id[1]; keys[1]->vlan1 = p->vlan_id[1];
keys[1]->vlan2 = p->vlan_id[2]; keys[1]->vlan2 = p->vlan_id[2];
@ -2372,7 +2372,7 @@ static int AFPXDPBypassCallback(Packet *p)
keys[0]->vlan0 = p->vlan_id[0]; keys[0]->vlan0 = p->vlan_id[0];
keys[0]->vlan1 = p->vlan_id[1]; keys[0]->vlan1 = p->vlan_id[1];
keys[0]->vlan2 = p->vlan_id[2]; keys[0]->vlan2 = p->vlan_id[2];
if (IPV4_GET_IPPROTO(p) == IPPROTO_TCP) { if (p->proto == IPPROTO_TCP) {
keys[0]->ip_proto = 1; keys[0]->ip_proto = 1;
} else { } else {
keys[0]->ip_proto = 0; keys[0]->ip_proto = 0;
@ -2409,7 +2409,7 @@ static int AFPXDPBypassCallback(Packet *p)
return AFPSetFlowStorage(p, p->afp_v.v4_map_fd, keys[0], keys[1], AF_INET); return AFPSetFlowStorage(p, p->afp_v.v4_map_fd, keys[0], keys[1], AF_INET);
} }
/* For IPv6 case we don't handle extended header in eBPF */ /* For IPv6 case we don't handle extended header in eBPF */
if (PacketIsIPv6(p) && ((IPV6_GET_NH(p) == IPPROTO_TCP) || (IPV6_GET_NH(p) == IPPROTO_UDP))) { if (PacketIsIPv6(p) && ((p->proto == IPPROTO_TCP) || (p->proto == IPPROTO_UDP))) {
SCLogDebug("add an IPv6"); SCLogDebug("add an IPv6");
if (p->afp_v.v6_map_fd == -1) { if (p->afp_v.v6_map_fd == -1) {
return 0; return 0;
@ -2425,12 +2425,12 @@ static int AFPXDPBypassCallback(Packet *p)
keys[0]->src[i] = GET_IPV6_SRC_ADDR(p)[i]; keys[0]->src[i] = GET_IPV6_SRC_ADDR(p)[i];
keys[0]->dst[i] = GET_IPV6_DST_ADDR(p)[i]; keys[0]->dst[i] = GET_IPV6_DST_ADDR(p)[i];
} }
keys[0]->port16[0] = htons(GET_TCP_SRC_PORT(p)); keys[0]->port16[0] = htons(p->sp);
keys[0]->port16[1] = htons(GET_TCP_DST_PORT(p)); keys[0]->port16[1] = htons(p->dp);
keys[0]->vlan0 = p->vlan_id[0]; keys[0]->vlan0 = p->vlan_id[0];
keys[0]->vlan1 = p->vlan_id[1]; keys[0]->vlan1 = p->vlan_id[1];
keys[0]->vlan2 = p->vlan_id[2]; keys[0]->vlan2 = p->vlan_id[2];
if (IPV6_GET_NH(p) == IPPROTO_TCP) { if (p->proto == IPPROTO_TCP) {
keys[0]->ip_proto = 1; keys[0]->ip_proto = 1;
} else { } else {
keys[0]->ip_proto = 0; keys[0]->ip_proto = 0;
@ -2452,8 +2452,8 @@ static int AFPXDPBypassCallback(Packet *p)
keys[1]->src[i] = GET_IPV6_DST_ADDR(p)[i]; keys[1]->src[i] = GET_IPV6_DST_ADDR(p)[i];
keys[1]->dst[i] = GET_IPV6_SRC_ADDR(p)[i]; keys[1]->dst[i] = GET_IPV6_SRC_ADDR(p)[i];
} }
keys[1]->port16[0] = htons(GET_TCP_DST_PORT(p)); keys[1]->port16[0] = htons(p->dp);
keys[1]->port16[1] = htons(GET_TCP_SRC_PORT(p)); keys[1]->port16[1] = htons(p->sp);
keys[1]->vlan0 = p->vlan_id[0]; keys[1]->vlan0 = p->vlan_id[0];
keys[1]->vlan1 = p->vlan_id[1]; keys[1]->vlan1 = p->vlan_id[1];
keys[1]->vlan2 = p->vlan_id[2]; keys[1]->vlan2 = p->vlan_id[2];

Loading…
Cancel
Save