关于PPPd拨号程序的虚拟网络接口PPP0数据交换问题

愿达前程 2012-06-01 04:07:33

PPP0 设备与linux内核交互接口IOCTL()进行数据交换,为什么需要创建SOCKET()来初始化IOCTL()操作,且开启的是个基于

SOCK_DGRAM 类型UDP socket。下面是创建与初始化函数:

int ppp_available(void){
////////......

fd = open("/dev/ppp", O_RDWR);

#if 0
if (fd < 0 && errno == ENOENT) {
/* try making it and see if that helps. */
if (mknod("/dev/ppp", S_IFCHR | S_IRUSR | S_IWUSR,
makedev(108, 0)) >= 0) {
fd = open("/dev/ppp", O_RDWR);
if (fd >= 0)
info("Created /dev/ppp device node");
else
unlink("/dev/ppp"); /* didn't work, undo the mknod */
} else if (errno == EEXIST) {
fd = open("/dev/ppp", O_RDWR);
}
}
#endif /* 0 */


///////......

/*
* Open a socket for doing the ioctl operations.
*/
s = socket(AF_INET, SOCK_DGRAM, 0);
if (s < 0)
return 0;

strlcpy (ifr.ifr_name, "ppp0", sizeof (ifr.ifr_name));
ok = ioctl(s, SIOCGIFFLAGS, (caddr_t) &ifr) >= 0;

//////........


...全文
457 1 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

567

社区成员

发帖
与我相关
我的任务
社区描述
英特尔® 边缘计算,聚焦于边缘计算、AI、IoT等领域,为开发者提供丰富的开发资源、创新技术、解决方案与行业活动。
社区管理员
  • 英特尔技术社区
  • shere_lin
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧