diff options
Diffstat (limited to 'drivers/ipoe/ipoe.c')
-rw-r--r-- | drivers/ipoe/ipoe.c | 7 |
1 files changed, 7 insertions, 0 deletions
diff --git a/drivers/ipoe/ipoe.c b/drivers/ipoe/ipoe.c index 5bafde6a..059b1397 100644 --- a/drivers/ipoe/ipoe.c +++ b/drivers/ipoe/ipoe.c @@ -736,9 +736,16 @@ static rx_handler_result_t ipoe_recv(struct sk_buff **pskb) return RX_HANDLER_PASS; arph = (struct _arphdr *)skb_network_header(skb); + if (arph->ar_op != htons(ARPOP_REQUEST)) return RX_HANDLER_PASS; + if (arph->ar_hrd != htons(ARPHRD_ETHER)) + return RX_HANDLER_PASS; + + if (arph->ar_pro != htons(ETH_P_IP)) + return RX_HANDLER_PASS; + saddr = arph->ar_sip; } else return RX_HANDLER_PASS; |