proxyarp: Relax frame length limit for RA and NA
Only the NS frames should be checked to be long enough to cover all the fields used in the NS data structure. This allows shorter RA and NA frames to be processed for multicast-to-unicast rules. Signed-off-by: Jouni Malinen <jouni@qca.qualcomm.com>
This commit is contained in:
parent
ef3ea80c68
commit
8c5043b42c
1 changed files with 3 additions and 1 deletions
|
@ -91,11 +91,13 @@ static void handle_ndisc(void *ctx, const u8 *src_addr, const u8 *buf,
|
||||||
int res;
|
int res;
|
||||||
char addrtxt[INET6_ADDRSTRLEN + 1];
|
char addrtxt[INET6_ADDRSTRLEN + 1];
|
||||||
|
|
||||||
if (len < ETH_HLEN + sizeof(*msg))
|
if (len < ETH_HLEN + sizeof(struct ip6_hdr) + sizeof(struct icmp6_hdr))
|
||||||
return;
|
return;
|
||||||
msg = (struct icmpv6_ndmsg *) &buf[ETH_HLEN];
|
msg = (struct icmpv6_ndmsg *) &buf[ETH_HLEN];
|
||||||
switch (msg->icmp6h.icmp6_type) {
|
switch (msg->icmp6h.icmp6_type) {
|
||||||
case NEIGHBOR_SOLICITATION:
|
case NEIGHBOR_SOLICITATION:
|
||||||
|
if (len < ETH_HLEN + sizeof(*msg))
|
||||||
|
return;
|
||||||
if (msg->opt_type != SOURCE_LL_ADDR)
|
if (msg->opt_type != SOURCE_LL_ADDR)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue