__in_dev_put(in_dev); 
static void pktgen_setup_inject(struct pktgen_dev *pkt_dev){	/* Try once more, just in case it works now. */        if (!pkt_dev->odev)                 pktgen_setup_dev(pkt_dev);                if (!pkt_dev->odev) {                printk("pktgen: ERROR: pkt_dev->odev == NULL in setup_inject.\n");                sprintf(pkt_dev->result, "ERROR: pkt_dev->odev == NULL in setup_inject.\n");                return;        }                /* Default to the interface's mac if not explicitly set. */	if ((pkt_dev->src_mac[0] == 0) && 	    (pkt_dev->src_mac[1] == 0) && 	    (pkt_dev->src_mac[2] == 0) && 	    (pkt_dev->src_mac[3] == 0) && 	    (pkt_dev->src_mac[4] == 0) && 	    (pkt_dev->src_mac[5] == 0)) {	       memcpy(&(pkt_dev->hh[6]), pkt_dev->odev->dev_addr, 6);       }        /* Set up Dest MAC */        memcpy(&(pkt_dev->hh[0]), pkt_dev->dst_mac, 6);        /* Set up pkt size */        pkt_dev->cur_pkt_size = pkt_dev->min_pkt_size;		if(pkt_dev->flags & F_IPV6) {		/*		 * Skip this automatic address setting until locks or functions 		 * gets exported		 */#ifdef NOTNOW		int i, set = 0, err=1;		struct inet6_dev *idev;		for(i=0; i< IN6_ADDR_HSIZE; i++)			if(pkt_dev->cur_in6_saddr.s6_addr[i]) {				set = 1;				break;			}		if(!set) {						/*			 * Use linklevel address if unconfigured.			 *			 * use ipv6_get_lladdr if/when it's get exported			 */			read_lock(&addrconf_lock);			if ((idev = __in6_dev_get(pkt_dev->odev)) != NULL) {				struct inet6_ifaddr *ifp;				read_lock_bh(&idev->lock);				for (ifp=idev->addr_list; ifp; ifp=ifp->if_next) {					if (ifp->scope == IFA_LINK && !(ifp->flags&IFA_F_TENTATIVE)) {						ipv6_addr_copy(&pkt_dev->cur_in6_saddr, &ifp->addr);						err = 0;						break;					}				}				read_unlock_bh(&idev->lock);			}			read_unlock(&addrconf_lock);			if(err)	printk("pktgen: ERROR: IPv6 link address not availble.\n");		}#endif	} 	else {		pkt_dev->saddr_min = 0;		pkt_dev->saddr_max = 0;		if (strlen(pkt_dev->src_min) == 0) {						struct in_device *in_dev; 			rcu_read_lock();			in_dev = __in_dev_get_rcu(pkt_dev->odev);			if (in_dev) {				if (in_dev->ifa_list) {					pkt_dev->saddr_min = in_dev->ifa_list->ifa_address;					pkt_dev->saddr_max = pkt_dev->saddr_min;				}				__in_dev_put(in_dev);				}			rcu_read_unlock();		}		else {			pkt_dev->saddr_min = in_aton(pkt_dev->src_min);			pkt_dev->saddr_max = in_aton(pkt_dev->src_max);		}		pkt_dev->daddr_min = in_aton(pkt_dev->dst_min);		pkt_dev->daddr_max = in_aton(pkt_dev->dst_max);	}        /* Initialize current values. */        pkt_dev->cur_dst_mac_offset = 0;        pkt_dev->cur_src_mac_offset = 0;        pkt_dev->cur_saddr = pkt_dev->saddr_min;        pkt_dev->cur_daddr = pkt_dev->daddr_min;        pkt_dev->cur_udp_dst = pkt_dev->udp_dst_min;        pkt_dev->cur_udp_src = pkt_dev->udp_src_min;	pkt_dev->nflows = 0;}
10457	/local/tlutelli/issta_data/temp/c/2005_temp/2005/10457/3e56a40bb36f1f73b4eac2ffe267c5357811e321/pktgen.c/clean/net/core/pktgen.c