pkt_dev = kmalloc(sizeof(struct pktgen_dev), GFP_KERNEL); 
pkt_dev = kzalloc(sizeof(struct pktgen_dev), GFP_KERNEL); 
static int pktgen_add_device(struct pktgen_thread *t, const char* ifname) {        struct pktgen_dev *pkt_dev;		/* We don't allow a device to be on several threads */	if( (pkt_dev = __pktgen_NN_threads(ifname, FIND)) == NULL) {						   		pkt_dev = kmalloc(sizeof(struct pktgen_dev), GFP_KERNEL);                if (!pkt_dev)                         return -ENOMEM;                memset(pkt_dev, 0, sizeof(struct pktgen_dev));		pkt_dev->flows = vmalloc(MAX_CFLOWS*sizeof(struct flow_state));		if (pkt_dev->flows == NULL) {			kfree(pkt_dev);			return -ENOMEM;		}		memset(pkt_dev->flows, 0, MAX_CFLOWS*sizeof(struct flow_state));		pkt_dev->min_pkt_size = ETH_ZLEN;                pkt_dev->max_pkt_size = ETH_ZLEN;                pkt_dev->nfrags = 0;                pkt_dev->clone_skb = pg_clone_skb_d;                pkt_dev->delay_us = pg_delay_d / 1000;                pkt_dev->delay_ns = pg_delay_d % 1000;                pkt_dev->count = pg_count_d;                pkt_dev->sofar = 0;                pkt_dev->udp_src_min = 9; /* sink port */                pkt_dev->udp_src_max = 9;                pkt_dev->udp_dst_min = 9;                pkt_dev->udp_dst_max = 9;                strncpy(pkt_dev->ifname, ifname, 31);                sprintf(pkt_dev->fname, "%s/%s", PG_PROC_DIR, ifname);                if (! pktgen_setup_dev(pkt_dev)) {                        printk("pktgen: ERROR: pktgen_setup_dev failed.\n");			if (pkt_dev->flows)				vfree(pkt_dev->flows);                        kfree(pkt_dev);                        return -ENODEV;                }                pkt_dev->proc_ent = create_proc_entry(pkt_dev->fname, 0600, NULL);                if (!pkt_dev->proc_ent) {                        printk("pktgen: cannot create %s procfs entry.\n", pkt_dev->fname);			if (pkt_dev->flows)				vfree(pkt_dev->flows);                        kfree(pkt_dev);                        return -EINVAL;                }                pkt_dev->proc_ent->read_proc = proc_if_read;                pkt_dev->proc_ent->write_proc = proc_if_write;                pkt_dev->proc_ent->data = (void*)(pkt_dev);		pkt_dev->proc_ent->owner = THIS_MODULE;                return add_dev_to_thread(t, pkt_dev);        }        else {                printk("pktgen: ERROR: interface already used.\n");                return -EBUSY;        }}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/2845b63b504b051a9cb4d78bed8b3594451a1f6f/pktgen.c/clean/net/core/pktgen.c