21 msg.msg_iov = &iov; 22 msg.msg_iovlen = 1; 数据缓冲区通过req结构来表示,它封装了两个数据结构nlmsghdr和inet_diag_req。前者用来表示netlink消息头,它是必须封装的数据结构。后者是NETLINK_INET_DIAG协议所特有的请求会话的数据结构,具体结构如下: 1 struct inet_diag_req { 2 __u8 idiag_family...
21 msg.msg_iov = &iov; 22 msg.msg_iovlen = 1;数据缓冲区通过req结构来表示,它封装了两个数据结构nlmsghdr和inet_diag_req。前者用来表示netlink消息头,它是必须封装的数据结构。后者是NETLINK_INET_DIAG协议所特有的请求会话的数据结构,具体结构如下:1...
staticvoidtcp_diag_get_info(structsock*sk,structinet_diag_msg*r, 801- void*_info) 802- { 803- conststructtcp_sock*tp=tcp_sk(sk); 804- structtcp_info*info=_info; 805- 806- r->idiag_rqueue=tp->rcv_nxt-tp->copied_seq;
Example application of how to passively monitor multiple sockets on Linux. - inet-diag-example/inet_monitor.c at master · kristrev/inet-diag-example
@@ -259,8 +259,10 @@ static int inet_diag_get_exact(struct sk_buff *in_skb, const struct inet_diag_handler *handler; handler = inet_diag_lock_handler(nlh->nlmsg_type); - if (!handler) - return -ENOENT; + if (IS_ERR(handler)) { ...
31 msg-auth MSG Authentication MSG验证 33 dsp Display Support Protocol 显示支持协议 35 ? any private printer server 预留给个人打印机服务 37 time Time 时间 38 rap Route Access Protocol 路由访问协议 39 rlp Resource Location Protocol 资源定位协议 41 graphics Graphics 图形 42 nameserver WIN...
20msg.msg_namelen =sizeof(dest_addr); 21msg.msg_iov = &iov; 22msg.msg_iovlen = 1; 数据缓冲区通过req结构来表示,它封装了两个数据结构nlmsghdr和inet_diag_req。前者用来表示netlink消息头,它是必须封装的数据结构。后者是NETLINK_INET_DIAG协议所特有的请求会话的数据结构,具体结构如下: ...
struct inet_diag_msg *m = NLMSG_DATA(h); struct rtattr *tb[INET_DIAG_MAX+1]; int ret;parse_rtattr(tb, INET_DIAG_MAX, (struct rtattr *)(m + 1), h->nlmsg_len - NLMSG_LENGTH(sizeof(*m)));d = xzalloc(sizeof(*d)); if (!d) return -1;d...
struct inet_diag_msg *m = NLMSG_DATA(h); struct rtattr *tb[INET_DIAG_MAX+1]; int ret;parse_rtattr(tb, INET_DIAG_MAX, (struct rtattr *)(m + 1), h->nlmsg_len - NLMSG_LENGTH(sizeof(*m)));d = xzalloc(sizeof(*d)); if (!d) return -1;d...