]> git.karo-electronics.de Git - karo-tx-linux.git/commitdiff
[PKTGEN]: srcmac fix
authorAdit Ranadive <adit.262@gmail.com>
Fri, 2 Nov 2007 22:05:27 +0000 (23:05 +0100)
committerAdrian Bunk <bunk@kernel.org>
Fri, 2 Nov 2007 23:56:44 +0000 (00:56 +0100)
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
Signed-off-by: Adrian Bunk <bunk@kernel.org>
net/core/pktgen.c

index 6e972e489b6dd078b9eb1fe3fb9ea3719c648fff..7bde446a0d4b55b6a5b5d186480acf11b8f8b904 100644 (file)
@@ -367,6 +367,9 @@ struct pktgen_thread {
  * Copyright 1994, University of Cambridge Computer Laboratory
  * All Rights Reserved.
  *
+ * Fixed src_mac command to set source mac of packet to value specified in
+ * command by Adit Ranadive <adit.262@gmail.com>
+ *
  */
 static inline s64 divremdi3(s64 x, s64 y, int type)
 {
@@ -1228,8 +1231,11 @@ static ssize_t pktgen_if_write(struct file *file, const char __user *user_buffer
        }
        if (!strcmp(name, "src_mac")) {
                char *v = valstr;
+               unsigned char old_smac[ETH_ALEN];
                unsigned char *m = pkt_dev->src_mac;
 
+               memcpy(old_smac, pkt_dev->src_mac, ETH_ALEN);
+
                len = strn_len(&user_buffer[i], sizeof(valstr) - 1);
                 if (len < 0) { return len; }
                memset(valstr, 0, sizeof(valstr));
@@ -1256,6 +1262,10 @@ static ssize_t pktgen_if_write(struct file *file, const char __user *user_buffer
                        }
                }         
 
+               /* Set up Src MAC */
+               if (compare_ether_addr(old_smac, pkt_dev->src_mac))
+                       memcpy(&(pkt_dev->hh[6]), pkt_dev->src_mac, ETH_ALEN);
+
                 sprintf(pg_result, "OK: srcmac");
                return count;
        }