您的位置:首页 > 运维架构 > Linux

使用ioctl向linux内核传递参数的方法实例

2013-09-05 23:03 399 查看
该篇实例是摘自网络(无法追根溯源倒低是哪位“前”辈写的了)

一、应用层

uint16data16;

if((fd=socket(AF_INET,SOCK_STREAM,0))<0)

{

printf("socketfailed\n\r");

}

if(ioctl(fd,SIOCSIFVLAN_PVID_PRI,&data16)<0)

{

printf("ioctlpvidfailed\n\r");

}


二、linux内核

1、
在sockios.h中定义

#defineSIOCSIFVLAN_PVID_PRI0x8985/*Set802.1QVLANpvid*/

2、在af_inet.c中

添加

externintVLAN1QEN(unsignedint,void*arg);

在inet_ioctl()函数中添加

caseSIOCSIFVLAN_PVID_PRI:

returnVLAN1QEN(cmd,arg);

3、另外定义:

staticunsignedintVLAN_PVID_PRI=0;

intVLAN1QEN(unsignedintcmd,void*arg)

{

unsignedintdata;

if(copy_from_user(&data,arg,sizeof(int)))

return-EFAULT;

switch(cmd){

caseSIOCSIFVLAN_PVID_PRI:

VLAN_PVID_PRI=data;

break;

default:

return-EINVAL;

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐