driver上添加获取dev获取到ip之后通知cp的command功能
2014-11-05 10:54
381 查看
定义网络子系统内核通知回调函数:
static struct notifier_block itm_inetaddr_cb = { .notifier_call = wlan_inetaddr_event, };
在module_init上注册该内核通知notifier_block:
ret = register_inetaddr_notifier(&itm_inetaddr_cb); if (ret) { printke("Couldn't register inetaddr notifier \n"); }
编写该回调函数:
static int wlan_inetaddr_event(struct notifier_block *this, unsigned long event, void *ptr) { unsigned char vif_id; wlan_vif_t *vif; struct net_device *dev; printkd("inetaddr callback is comming in !\n"); struct in_ifaddr *ifa = (struct in_ifaddr *)ptr; dev = ifa->ifa_dev ? ifa->ifa_dev->dev : NULL; if((dev != (id_to_vif(0)->ndev)) && (dev != (id_to_vif(1)->ndev))) { printke("dev id not equal to 0 or 1!\n"); goto done; } if (dev == NULL) goto done; printkd(" inetaddr dev not equal to null !\n"); vif = ndev_to_vif(dev); vif_id = vif->id; if (!vif) goto done; printkd("inetaddr vif not equal to null !\n"); switch (event) { case NETDEV_UP: printkd("inetaddr UP event is comming in !\n"); wlan_cmd_get_ip(vif_id, (u8 *) & ifa->ifa_address); break; case NETDEV_DOWN: printkd("inetaddr DOWN event is comming in !\n"); break; default: printkd("inetaddr defaut is comming in !\n"); break; }
添加该命令函数
int wlan_cmd_get_ip(unsigned char vif_id, u8 *ip) { int dataLen; struct wlan_cmd_get_ip *ptr; dataLen = sizeof(struct wlan_cmd_get_ip); ptr = kmalloc( dataLen, GFP_KERNEL); memcpy(&(ptr->ip[0]), ip, 4); hex_dump("inetaddr ip", strlen("inetaddr ip"), ip, 4); wlan_cmd_send_recv(vif_id, (unsigned char *)ptr, dataLen, WIFI_CMD_GET_IP, CMD_WAIT_TIMEOUT); return 0; }
相关文章推荐
- Enterprise Library 2.0系列:添加一条记录之后,再获取这条记录
- IE Devtoolbar的Element Source功能(获取js生成HTML源码)
- Launcher功能的修改及添加,本篇是一些小功能的展示,通知栏显隐,dock显隐,屏幕页面跳转,(语音)搜索,等小功能
- WP8.1StoreApp(WP8.1RT)---添加推送功能和获取系统信息
- Android xmpp开发 asmack获取离线在线添加好友消息 及 好友上线下线通知
- command line模式下为DHCP添加IP保留
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
- Flurry Analytics最近免费添加了获取新用户分析和app崩溃报告的功能
- CKEDITOR各种操作 获取CKEDITOR的内容|添加功能
- 添加压缩功能的完全可控件IP*Works! Zip
- Linux下一个网口绑定两个IP(同Windows下IP协议中高级选项的添加功能)
- 【小功能2】android获取手机信息(号码,内存,CPU,分辨率,MAC,IP,SD卡,IMEI,经纬度,信号强度等等)
- 为OICQ添加显示IP和端口功能
- 获取外网IP并发送邮件通知
- 计算机硬件通用功能类:硬件信息控制器(主机名,cpu编号,网卡地址,MAC地址,主硬盘编号,ip地址,获取最大线程数,验证服务IP)
- 为OICQ添加显示IP和端口功能
- 为Spring Security添加IP限制功能
- 要获取NAT之后的外网IP地址
- Android xmpp开发 asmack获取离线在线添加好友消息 及 好友上线下线通知
- Java编程实现获取本机IP和计算机名的功能