当前位置: 首页 > news >正文

微商城网站建设价位手机app设计网站

微商城网站建设价位,手机app设计网站,网站的推广优化,淄博个人承接网站制作文章目录 前言示例示例代码构造请求创建套接字发送请求 简化示例 前言 前置阅读要求#xff1a;libnl教程(1):订阅内核的netlink广播通知 本文介绍#xff0c;libnl如何向内核发送请求。这包含三个部分#xff1a;构建请求#xff1b;创建套接字#xff1b;发送请求。 … 文章目录 前言示例示例代码构造请求创建套接字发送请求 简化示例 前言 前置阅读要求libnl教程(1):订阅内核的netlink广播通知 本文介绍libnl如何向内核发送请求。这包含三个部分构建请求创建套接字发送请求。 同样本文使用示例说明libnl的API该如何组合使用。 本文使用的示例是发送netlink请求以创建一张dummy网卡。 示例 示例代码 运行该示例代码即可创建一个dummy类型的网卡。网卡名为dummy0。 代码参考自https://github.com/FDio/vpp/blob/master/src/vnet/devices/netlink.c 上面的参考代码很好完整的显示了构建请求-创建套接字-发送请求-接收回复的过程。 但是上面参考代码的路子有点野。因为它很少调用libnl的API。它作为参考是好的。但是日常编程中还是尽量调用libnl的API。 下面的示例代码中我在展示逻辑结构的基础上尽量调用了libnl的API。 #include linux/rtnetlink.h #include netlink/msg.h #include netlink/netlink.h #include netlink/route/link.h #include netlink/socket.hint netlink_add(const char *iftype, const char *ifname) {int ret 0;struct nl_msg *msg NULL;struct nl_sock *sk NULL;// 构建请求msg nlmsg_alloc_simple(RTM_NEWLINK, NLM_F_REQUEST | NLM_F_ACK |NLM_F_CREATE | NLM_F_EXCL);struct ifinfomsg ifi {};ifi.ifi_family AF_UNSPEC;ret nlmsg_append(msg, ifi, sizeof(ifi), NLMSG_ALIGNTO);if (ret 0) {printf(%s, nl_geterror(ret));goto end;}#if 0ret nla_put_string(msg, IFLA_INFO_KIND, iftype);if (ret 0) {goto end;} #endifstruct nlattr *info nla_nest_start(msg, IFLA_LINKINFO);ret nla_put_string(msg, IFLA_INFO_KIND, iftype);if (ret 0) {printf(%s, nl_geterror(ret));goto end;}nla_nest_end(msg, info);ret nla_put_string(msg, IFLA_IFNAME, ifname);if (ret 0) {printf(%s, nl_geterror(ret));goto end;}// 创建套接字sk nl_socket_alloc();nl_connect(sk, NETLINK_ROUTE);// 发送请求ret nl_send_auto(sk, msg);if (ret 0) {printf(%s, nl_geterror(ret));goto end;}// 接收回复ret nl_recvmsgs_default(sk);if (ret 0) {printf(%s, nl_geterror(ret));goto end;}end:nlmsg_free(msg);nl_socket_free(sk);return 0; }int main(int argc, char *argv[]) { netlink_add(dummy, dummy0); }构造请求 一个Link请求包含三部分 netlink header(struct nlmsghdr): netlink消息本身的头。其余部分都是netlink消息的负载。整个消息都遵循TLV(Type–length–value)。消息头中记录着消息的整体长度。后面的负载中的属性也遵循TLV。netlink link messages header(struct ifinfomsg): Link请求的消息头。netlink attributes(struct nlattr): 一个属性的类型和长度后面要跟着具体的属性。 请求的整体格式如下。 在内存中有对齐要求格式如下。 接下来介绍该如何填充这些内容。 struct nlmsghdr的填充可以使用 nlmsg_alloc_simple(int nlmsg_type, int flags)函数填充。调用这些API的好处是可以屏蔽 sequence numbers、port等细节。代码中的消息类型是RTM_NEWLINK表示创建网卡。标志的含义表示这是一个请求需要回复请求创建一张网卡如果网卡已经存在则不在创建。struct ifinfomsg的填充示例代码没有填充任何内容。因为是创建网卡。如果是查询/修改网卡等操作需要根据不同情况填充不同内容。struct nlattr的填充示例追加了两个属性分别用来设置网卡类型和网卡名称。为什么网卡类型使用嵌套属性。因为我们用户层是发起请求这个是内核路由部分的要求。我是咋知道的呢因为我去看来libnl中rtnl_link_add()函数的源码知道的。 创建套接字 使用libnl的接口创建套接字。当然我们也可以跳过libnl的API直接使用socket创建套接字但是没必要。 sk nl_socket_alloc(); nl_connect(sk, NETLINK_ROUTE);发送请求 通过netlink套接字发送netlink消息的标准方法是使用nl_send_auto()函数。它将自动补充netlink消息头中丢失的内容信息然后将消息传递给nl_send()。 简化示例 上面示例中最麻烦的一步是构造请求。 其实我们想一想构造请求基本都是固定的只有很少的字段需要用户指定。 再想一想其实请求和回复也基本是固定的。 这些都可以按照目的进行封装形成更高层的接口。 下面我们使用libnl的接口可以更简单的实现我们的目标。(因为这个完全失去了请求的细节所以我构造了上面的示例。) #include linux/rtnetlink.h #include netlink/msg.h #include netlink/netlink.h #include netlink/route/link.h #include netlink/socket.hint netlink_add(const char *iftype, const char *ifname) {struct rtnl_link *link rtnl_link_alloc();rtnl_link_set_type(link, iftype);rtnl_link_set_name(link, ifname);struct nl_sock *sk nl_socket_alloc();nl_connect(sk, NETLINK_ROUTE);rtnl_link_add(sk, link, NLM_F_CREATE | NLM_F_EXCL);return 0; }int main(int argc, char *argv[]) { netlink_add(dummy, dummy0); }
http://www.yingshimen.cn/news/9223/

相关文章:

  • 有了源代码如何做网站设计本装修app
  • 网站建设与设计饰品比较有特色的网站
  • 网站开发实践教程网站建设维护实训总结
  • 免费asp网站源码深圳企业建站公司
  • 镇江网站推广排名网站建设运营合同模板
  • 雷神代刷网站推广动态背景设置网站
  • 网站建设如何找客户哪些官网用wordpress
  • 建立网站用什么软件金色金融公司网站源码
  • 哈尔滨市建设局网站seo信息推广
  • 网站后台维护月薪多少杭州工作招聘网
  • 生活服务行业网站建设如何建设一家网站
  • 招聘网站设计师要求广告设计公司怎么样
  • 商务网站建设规划流程wordpress给文章添加子页面
  • 计算机软件网站建设缓存 wordpress 加速
  • 微企免费做网站公司网站怎么维护
  • 哪家网站建设做的好移动端网站设计规范
  • 盛锡福网站学电商美工一个月多少钱
  • Apple 手机网站制作织梦手机网站怎么安装教程视频教程
  • 网站建设佰首选金手指十三第三方网站开发优缺点
  • 汕头网站推广哪家好国外网站素材
  • 源代码做网站备份wordpress数据库
  • 越秀网站建设推广在rds上安装wordpress
  • 网站建设尾款收取产品网站推广方案
  • 建设举报网站房屋设计师破解版
  • 黄岐建网站筹划建设智慧海洋门户网站
  • 慈溪市网站建设平面设计需要学什么软件?
  • php网站开发技术题目云南网app下载
  • 在哪个网站做淘宝水印上海百度seo网站优化
  • 做外贸现在一般都通过哪些网站珠海网约车
  • 温州外贸网站制作手机创建自己网站