mirror of
https://github.com/adulau/aha.git
synced 2024-12-29 04:06:22 +00:00
[PKTGEN]: Fix random packet sizes causing panic
Signed-off-by: Robert Olsson <robert.olsson@its.uu.se> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
60fe740320
commit
64053beeb5
1 changed files with 13 additions and 16 deletions
|
@ -151,7 +151,7 @@
|
||||||
#include <asm/timex.h>
|
#include <asm/timex.h>
|
||||||
|
|
||||||
|
|
||||||
#define VERSION "pktgen v2.61: Packet Generator for packet performance testing.\n"
|
#define VERSION "pktgen v2.62: Packet Generator for packet performance testing.\n"
|
||||||
|
|
||||||
/* #define PG_DEBUG(a) a */
|
/* #define PG_DEBUG(a) a */
|
||||||
#define PG_DEBUG(a)
|
#define PG_DEBUG(a)
|
||||||
|
@ -1921,6 +1921,11 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
|
||||||
struct iphdr *iph;
|
struct iphdr *iph;
|
||||||
struct pktgen_hdr *pgh = NULL;
|
struct pktgen_hdr *pgh = NULL;
|
||||||
|
|
||||||
|
/* Update any of the values, used when we're incrementing various
|
||||||
|
* fields.
|
||||||
|
*/
|
||||||
|
mod_cur_headers(pkt_dev);
|
||||||
|
|
||||||
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
sprintf(pkt_dev->result, "No memory");
|
sprintf(pkt_dev->result, "No memory");
|
||||||
|
@ -1934,11 +1939,6 @@ static struct sk_buff *fill_packet_ipv4(struct net_device *odev,
|
||||||
iph = (struct iphdr *)skb_put(skb, sizeof(struct iphdr));
|
iph = (struct iphdr *)skb_put(skb, sizeof(struct iphdr));
|
||||||
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
||||||
|
|
||||||
/* Update any of the values, used when we're incrementing various
|
|
||||||
* fields.
|
|
||||||
*/
|
|
||||||
mod_cur_headers(pkt_dev);
|
|
||||||
|
|
||||||
memcpy(eth, pkt_dev->hh, 12);
|
memcpy(eth, pkt_dev->hh, 12);
|
||||||
*(u16*)ð[12] = __constant_htons(ETH_P_IP);
|
*(u16*)ð[12] = __constant_htons(ETH_P_IP);
|
||||||
|
|
||||||
|
@ -2192,7 +2192,12 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
|
||||||
int datalen;
|
int datalen;
|
||||||
struct ipv6hdr *iph;
|
struct ipv6hdr *iph;
|
||||||
struct pktgen_hdr *pgh = NULL;
|
struct pktgen_hdr *pgh = NULL;
|
||||||
|
|
||||||
|
/* Update any of the values, used when we're incrementing various
|
||||||
|
* fields.
|
||||||
|
*/
|
||||||
|
mod_cur_headers(pkt_dev);
|
||||||
|
|
||||||
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
skb = alloc_skb(pkt_dev->cur_pkt_size + 64 + 16, GFP_ATOMIC);
|
||||||
if (!skb) {
|
if (!skb) {
|
||||||
sprintf(pkt_dev->result, "No memory");
|
sprintf(pkt_dev->result, "No memory");
|
||||||
|
@ -2206,17 +2211,9 @@ static struct sk_buff *fill_packet_ipv6(struct net_device *odev,
|
||||||
iph = (struct ipv6hdr *)skb_put(skb, sizeof(struct ipv6hdr));
|
iph = (struct ipv6hdr *)skb_put(skb, sizeof(struct ipv6hdr));
|
||||||
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
udph = (struct udphdr *)skb_put(skb, sizeof(struct udphdr));
|
||||||
|
|
||||||
|
|
||||||
/* Update any of the values, used when we're incrementing various
|
|
||||||
* fields.
|
|
||||||
*/
|
|
||||||
mod_cur_headers(pkt_dev);
|
|
||||||
|
|
||||||
|
|
||||||
memcpy(eth, pkt_dev->hh, 12);
|
memcpy(eth, pkt_dev->hh, 12);
|
||||||
*(u16*)ð[12] = __constant_htons(ETH_P_IPV6);
|
*(u16*)ð[12] = __constant_htons(ETH_P_IPV6);
|
||||||
|
|
||||||
|
|
||||||
datalen = pkt_dev->cur_pkt_size-14-
|
datalen = pkt_dev->cur_pkt_size-14-
|
||||||
sizeof(struct ipv6hdr)-sizeof(struct udphdr); /* Eth + IPh + UDPh */
|
sizeof(struct ipv6hdr)-sizeof(struct udphdr); /* Eth + IPh + UDPh */
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue