Ejemplo n.º 1
0
static int getInfo(char __user* buf, char* interface, int info)
{
	char address[4];
	struct net_device   *dev;
	int len=0; 
	struct in_device __rcu *in_dev;
    dev = first_net_device(&init_net);
	struct in_ifaddr __rcu *ifap;
    while (dev) {
		if(!strcmp(interface,dev->name)) break;
        dev = next_net_device(dev);
    }
	if(!dev){
		buf="Nie znaleziono interfejsu.\n\0";
	}
	else
	{
		in_dev =(dev->ip_ptr);
		int i;
		for (i = 0; i < 6; i++) 
		    len += sprintf( buf+len, "%02X%c", dev->dev_addr[i], (i<5)?':':' ' );
		if ( dev->flags & IFF_UP ) 
			len += sprintf( buf+len, "UP" );
		else
			len += sprintf( buf+len, "DOWN" );
		printk(KERN_INFO "Address: %pI4\n", ifap->ifa_address);
		for (ifap = in_dev->ifa_list; ifap != NULL; ifap = ifap->ifa_next) 
		{
    		/*sprintf(buf+len, "%s",inet_ntoa(ifap->ifa_address));*/
			
		}
	}
    return 0;
}
Ejemplo n.º 2
0
int ieee80211_rtwmp_init(char * net_dev_name){
	int found = 0;
	net_dev = first_net_device(&init_net);
	while (net_dev) {
		net_dev = next_net_device(net_dev);
		if (strstr(net_dev->name, net_dev_name) != NULL) {
			found = 1;
			break;
		}
	}
	if (!found){
		printk(KERN_INFO "Error: unable to find net_device %s\n",net_dev_name);
		return 0;
	}

	/* Build the ethernet header used for tx */
	ethernet_header = (struct ethhdr *) ethernet_frame;
	memcpy(ethernet_header->h_source, src_mac, ETH_ALEN);
	memcpy(ethernet_header->h_dest, dst_mac, ETH_ALEN);
	ethernet_header->h_proto = htons(WMP_PROTO);

	init_rx_queue(&rx_rtwmp_queue);

	printk(KERN_INFO "Found net_device %s",net_dev->name);
	printk(KERN_INFO "MAC80211-RT-WMP initialized successfully\n");
	initialized = 1;
	return 1;

}
Ejemplo n.º 3
0
static int getInfo(struct kern_usr_transfer *k_str)
{
	char *buf=k_str->msg_from_kern;
	char *interface="wlp3s0";
	int flag=k_str->flag;
	struct net_device   *dev;
	struct kern_user_transfer *tmp;
	int len=0; 
	unsigned char ipv6[16];
	
	
    dev = first_net_device(&init_net);
    while (dev) {
		if(!strcmp(interface,dev->name)) break;
        dev = next_net_device(dev);
    }
	
	if(!dev){
		len += sprintf( buf+len, "Nie znaleziono interfejsu: '%s'\n",interface);
		return len;
	}
		
	len += sprintf(buf+len,"%s:\n",interface);
		
	//Mac
	if (flag & I_MAC){
		
		int i;
		len += sprintf(buf+len,"\tHWaddr: ");
		for (i = 0; i < 6; i++) 
			len += sprintf( buf+len, "%02X%c", dev->dev_addr[i], (i<5)?':':' ' );
		len += sprintf(buf+len,"\n");
	}
	//Status UP/DOWN
	if (flag & I_STAT){
		if ( dev->flags & IFF_UP ) 
			len += sprintf( buf+len, "\tStatus: UP\n" );
		else
			len += sprintf( buf+len, "\tStatus: DOWN\n" );
	}
	//IPv4
	if (flag & I_IPv4)
	{
		
		__be32 addr; //adres IPv4
		struct in_device __rcu* in_dev; 
		struct in_ifaddr __rcu* ifap;

		in_dev=(dev->ip_ptr);
		if (in_dev->ifa_list)
		{

			ifap = in_dev->ifa_list;
			addr = ifap->ifa_address;
			len += sprintf(buf+len, "\tIPv4:		%d.%d.%d.%d\n", addr & 0xff, (addr >> 8) & 0xff,(addr >> 16) & 0xff, addr >> 24);
			addr = ifap->ifa_mask;
			len += sprintf(buf+len, "\tMaska:		%d.%d.%d.%d\n", addr & 0xff, (addr >> 8) & 0xff,(addr >> 16) & 0xff, addr >> 24);

		}
Ejemplo n.º 4
0
static void *wireless_dev_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
	struct net *net = seq_file_net(seq);

	++*pos;

	return v == SEQ_START_TOKEN ?
		first_net_device(net) : next_net_device(v);
}
Ejemplo n.º 5
0
static int __init llc_init(void)
{
	struct net_device *dev;

	dev = first_net_device(&init_net);
	if (dev != NULL)
		dev = next_net_device(dev);

	dev_add_pack(&llc_packet_type);
	dev_add_pack(&llc_tr_packet_type);
	return 0;
}
Ejemplo n.º 6
0
static int __init llc_init(void)
{
	struct net_device *dev;

	dev = first_net_device(&init_net);
	if (dev != NULL)
		dev = next_net_device(dev);

	if (dev != NULL)
		memcpy(llc_station_mac_sa, dev->dev_addr, ETH_ALEN);
	else
		memset(llc_station_mac_sa, 0, ETH_ALEN);
	dev_add_pack(&llc_packet_type);
	dev_add_pack(&llc_tr_packet_type);
	return 0;
}
Ejemplo n.º 7
0
static int getInterfaces(struct kern_usr_transfer *k_str)
{
	char *buf=k_str->msg_from_kern;
	struct net_device   *dev;
	
    int nr=0;
	int len=0;

	dev = first_net_device(&init_net);
    while (dev) {
        nr++;
        len+=sprintf( buf+len, "%d.   %s\n", nr, dev->name );
        dev = next_net_device(dev);
    }
    return len;
}
Ejemplo n.º 8
0
static int getInterfaces(char __user* buf)
{

	struct net_device   *dev;
	int len=0;
	int nr=0;
	
	dev = first_net_device(&init_net);
    while (dev) 
	{
		nr++;
        len+=sprintf( buf+len, "%d.   %s\n", nr, dev->name );
        dev = next_net_device(dev);
    }
    return len;

}
Ejemplo n.º 9
0
static int netdev_callback(struct notifier_block *self,
	unsigned long event, void *ctx)
{
	struct net_device *dev;
	struct net_device *dev_n = netdev_notifier_info_to_dev(ctx);
        struct in_device *in_dev;
	char *lo_if = "lo";

	switch (event)
	{
	case NETDEV_UP:
	case NETDEV_CHANGE:
	case NETDEV_CHANGEADDR:
	case NETDEV_NOTIFY_PEERS:
		in_dev = __in_dev_get_rtnl(dev_n);

		if (!in_dev) {
			printk(KERN_INFO "not in dev, skip\n");
			break;
		}

		if (dev_n->operstate == IF_OPER_UP) {
			msleep( garp_delay );

			if (debug == 1)
				printk(KERN_INFO "send gratuitous arp from [%s]\n",
				 dev_n->name);

			inetdev_send_gratuitous_arp(dev_n, in_dev);
		}

		if (send_all == 1)
		{
			if ( strcmp(dev_n->name, lo_if) == 0){
				if (debug == 1)
					printk(KERN_INFO "notification from lo, skip\n");
				break;
			}
	
			dev = first_net_device(&init_net);
			read_lock(&dev_base_lock);
	
			while (dev) {
				if (debug == 1)
					printk(KERN_INFO 
					"found [%s], notification from [%s]\n",
					dev->name, dev_n->name);
	
				if (dev->operstate == IF_OPER_UP) {
					if (debug == 1)
						printk(KERN_INFO 
					 	"[%s] type [%d] state [%d] is up\n",
					 	dev->name, dev->type, dev->operstate);
				} else {
					if (debug == 1)
						printk(KERN_INFO 
					 	"[%s] type [%d] state [%d] unknown oper state\n",
						 dev->name, dev->type, dev->operstate);
				}
	
				if (strcmp(dev->name, lo_if) == 0){
					if (debug == 1)
						printk(KERN_INFO "skip lo\n");

					dev = next_net_device(dev);
					continue;
				}
	
	        		in_dev = __in_dev_get_rtnl(dev);
				if (!in_dev) {
					if (debug == 1)
						printk(KERN_INFO "not in dev\n");

					dev = next_net_device(dev);
					continue;
				}
	
				if (dev->operstate == IF_OPER_UP) {
					inetdev_send_gratuitous_arp(dev, in_dev);
				}
	
				dev = next_net_device(dev);
			}
			read_unlock(&dev_base_lock);
		}
		break;
	}

	if (debug == 1)
	{
		switch (event)
		{
		case NETDEV_UP:
			printk(KERN_INFO "got NETDEV_UP\n");
			break;
		case NETDEV_DOWN:
			printk(KERN_INFO "got NETDEV_DOWN\n");
			break;
		case NETDEV_REBOOT:
			printk(KERN_INFO "got NETDEV_REBOOT\n");
			break;
		case NETDEV_CHANGE:
			printk(KERN_INFO "got NETDEV_CHANGE\n");
			break;
		case NETDEV_REGISTER:
			printk(KERN_INFO "got NETDEV_REGISTER\n");
			break;
		case NETDEV_UNREGISTER:
			printk(KERN_INFO "got NETDEV_UNREGISTER\n");
			break;
		case NETDEV_CHANGEMTU:
			printk(KERN_INFO "got NETDEV_CHANGEMTU\n");
			break;
		case NETDEV_CHANGEADDR:
			printk(KERN_INFO "got NETDEV_CHANGEADDR\n");
			break;
		case NETDEV_GOING_DOWN:
			printk(KERN_INFO "got NETDEV_GOING_DOWN\n");
			break;
		case NETDEV_CHANGENAME:
			printk(KERN_INFO "got NETDEV_CHANGENAME\n");
			break;
		case NETDEV_FEAT_CHANGE:
			printk(KERN_INFO "got NETDEV_FEAT_CHANGE\n");
			break;
		case NETDEV_BONDING_FAILOVER:
			printk(KERN_INFO "got NETDEV_BONDING_FAILOVER\n");
			break;
		case NETDEV_PRE_UP:
			printk(KERN_INFO "got NETDEV_PRE_UP\n");
			break;
		case NETDEV_PRE_TYPE_CHANGE:
			printk(KERN_INFO "got NETDEV_PRE_TYPE_CHANGE\n");
			break;
		case NETDEV_POST_TYPE_CHANGE:
			printk(KERN_INFO "got NETDEV_POST_TYPE_CHANGE\n");
			break;
		case NETDEV_POST_INIT:
			printk(KERN_INFO "got NETDEV_POST_INIT\n");
			break;
		case NETDEV_UNREGISTER_FINAL:
			printk(KERN_INFO "got NETDEV_UNREGISTER_FINAL\n");
			break;
		case NETDEV_RELEASE:
			printk(KERN_INFO "got NETDEV_RELEASE\n");
			break;
		case NETDEV_NOTIFY_PEERS:
			printk(KERN_INFO "got NETDEV_NOTIFY_PEERS\n");
			break;
		case NETDEV_JOIN:
			printk(KERN_INFO "got NETDEV_JOIN\n");
			break;
		#ifdef NETDEV_PRECHANGEMTU
		case NETDEV_CHANGEUPPER:
			printk(KERN_INFO "got NETDEV_CHANGEUPPER\n");
			break;
		case NETDEV_RESEND_IGMP:
			printk(KERN_INFO "got NETDEV_RESEND_IGMP\n");
			break;
		case NETDEV_PRECHANGEMTU:
			printk(KERN_INFO "got NETDEV_PRECHANGEMTU\n");
			break;
		#endif
		#ifdef NETDEV_CHANGEINFODATA
		case NETDEV_CHANGEINFODATA:
			printk(KERN_INFO "got NETDEV_CHANGEINFODATA\n");
			break;
		#endif
		default:
			printk(KERN_INFO "got unknown NETDEV event\n");
		}
	}

	return 0;

}
Ejemplo n.º 10
0
static int __init dump_init_module(void)
{
	/* map the io space*/
	preg = (unsigned int *)ioremap(REG, LEN);
    	if(!preg)
		goto error1;

	int i;
	for(i=0; i<LEN/sizeof(int); i++) {
		if( 
			(REG+i*4) != 0x3106002C && 
			(REG+i*4) != 0x31060FE8 && 
			(REG+i*4) != 0x31060FEC && 
			(REG+i*4) != 0x31060038 && 
			(REG+i*4) != 0x3106003C && 
			(REG+i*4) != 0x3106003C && 
			(REG+i*4) != 0x31060208 && 
			(REG+i*4) != 0x3106020C && 
			(REG+i*4) != 0x31060ff0 && 
			!((REG+i*4) >= 0x3106004C && (REG+i*4) <= 0x310600FC) &&
			!((REG+i*4) >= 0x31060130 && (REG+i*4) <= 0x31060154) &&
			!((REG+i*4) >= 0x31060164 && (REG+i*4) <= 0x3106016c) &&
			!((REG+i*4) >= 0x31060178 && (REG+i*4) <= 0x310601fc) &&
			!((REG+i*4) >= 0x31060218 && (REG+i*4) <= 0x31060fdc) 
				)
		printk(KERN_ERR "0x%08x : 0x%08x\n", REG+i*4, *(preg+i));
	}
//	if(*(preg + 4/4) == 0x30 ) {
//		*(preg + 4/4) = 0x31;
//		printk(KERN_ERR "0x%08x : is changed\n", 4);
//	}
//	if(*(preg + 0x100/4) == 0x43 ) {
//		*(preg + 0x100/4) = 0x443;
//		printk(KERN_ERR "0x%08x : is changed\n", 0x100);
//	} 
//	if(*(preg + 8/4) == 0x12 ) {
//		*(preg + 8/4) = 0x15;
//		printk(KERN_ERR "0x%08x : is changed\n", 8);
//	}
//	if(*(preg + 0x18/4) == 0 ) {
//		*(preg + 0x18/4) = 0x100;
//		printk(KERN_ERR "0x%08x : is changed\n", 0x18);
//	} 
    	/* timer to get button event */

	struct net_device *dev;

	dev = first_net_device(&init_net);
	while (dev) {
		printk(KERN_INFO "found [%s]\n", dev->name);
		if(strcmp(dev->name, "eth0")==0) {
			printk("dev=%x\n", dev);
			break;
		}
		dev = next_net_device(dev);
	}

	struct netdata_local *pldat = netdev_priv(dev);
	struct phy_device *phydev = pldat->phy_dev;
	
	printk(KERN_ERR "phy link= %d pldat link=%d state=%d update=%d\n", phydev->link, pldat->link, phydev->state, phydev->drv->update_link);
//	if( phydev->link == 0)
//		phydev->link=1;
//	if( pldat->link == 0)
//		pldat->link=1;
//	if(phydev->state==10)
//		phydev->state=6;

//	this can let it live
//	phydev->state=10;
	//if(phydev->drv->update_link=0)
	//	phydev->drv->update_link=1;

	//this can let it live to
	//phy_start(phydev);

//	init_timer(&cb_timer);
//	cb_timer.function = button_check;
//	cb_timer.expires = get_jiffies_64() + HZ; 
//	cb_timer.data = &(phydev->drv->update_link);
//	add_timer(&cb_timer);

	//mod_timer(&cb_timer, get_jiffies_64()+HZ);
	myread = pldat->mii_bus->read;
	pldat->mii_bus->read = &lpc_mdio_read;

	return 0;
error1:
    	return -1;
} /* End of init_module() */
Ejemplo n.º 11
0
static void *dev_mc_seq_next(struct seq_file *seq, void *v, loff_t *pos)
{
	++*pos;
	return next_net_device((struct net_device *)v);
}