Add more padding for arp packets 98/204698/3 accepted/tizen/unified/20190429.103809 submit/tizen/20190426.010452 submit/tizen/20190429.011734 submit/tizen/20190429.011734submit/tizen/20190429.011734
authorCheoleun Moon <chleun.moon@samsung.com>
Fri, 26 Apr 2019 00:22:26 +0000 (09:22 +0900)
committerCheoleun Moon <chleun.moon@samsung.com>
Fri, 26 Apr 2019 00:40:35 +0000 (09:40 +0900)
The minimum size of ethernet frame is 512 bits (64 octets).
It is required for correct CSMA/CD protocol operation.
(ref: 4.2.3.3 and 4.4.2, IEEE Std 802.3-2018)

dev_validate_header() in linux/net/packet/af_packet.c checks the frame size
and sendto() returns EINVAL if it returns false.

Change-Id: If42738cb796e4827ae396bc1b4f596c2c498bf65
Signed-off-by: Cheoleun Moon <chleun.moon@samsung.com>
src/ip-conflict-detect.c

index 4c2a3f3..9021c04 100755 (executable)
@@ -75,7 +75,7 @@ struct arp_message {
        unsigned char  s_IPaddr[IP_ADDRESS_LENGTH];             /* sender IP address */
        unsigned char  t_hwaddr[MAC_ADDRESS_LENGTH];            /* target hardware address */
        unsigned char  t_IPaddr[IP_ADDRESS_LENGTH];             /* target IP address */
-       unsigned char  pad[18];                         /* pad for min. Ethernet payload (60 bytes) */
+       unsigned char  pad[22];                         /* pad for min. Ethernet payload (64 bytes) */
 };
 
 typedef enum {