mirror of
https://github.com/tbsdtv/linux_media.git
synced 2025-07-23 20:51:03 +02:00
tipc: implement socket diagnostics for AF_TIPC
This commit adds socket diagnostics capability for AF_TIPC in netlink family NETLINK_SOCK_DIAG in a new kernel module (diag.ko). The following are key design considerations: - config TIPC_DIAG has default y, like INET_DIAG. - only requests with flag NLM_F_DUMP is supported (dump all). - tipc_sock_diag_req message is introduced to send filter parameters. - the response attributes are of TLV, some nested. To avoid exposing data structures between diag and tipc modules and avoid code duplication, the following additions are required: - export tipc_nl_sk_walk function to reuse socket iterator. - export tipc_sk_fill_sock_diag to fill the tipc diag attributes. - create a sock_diag response message in __tipc_add_sock_diag defined in diag.c and use the above exported tipc_sk_fill_sock_diag to fill response. Acked-by: Jon Maloy <jon.maloy@ericsson.com> Acked-by: Ying Xue <ying.xue@windriver.com> Signed-off-by: GhantaKrishnamurthy MohanKrishna <mohan.krishna.ghanta.krishnamurthy@ericsson.com> Signed-off-by: Parthasarathy Bhuvaragan <parthasarathy.bhuvaragan@gmail.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
committed by
David S. Miller
parent
dfde331e75
commit
c30b70deb5
@@ -49,6 +49,8 @@
|
||||
#define RCVBUF_DEF (FLOWCTL_BLK_SZ * 1024 * 2)
|
||||
#define RCVBUF_MAX (FLOWCTL_BLK_SZ * 1024 * 16)
|
||||
|
||||
struct tipc_sock;
|
||||
|
||||
int tipc_socket_init(void);
|
||||
void tipc_socket_stop(void);
|
||||
void tipc_sk_rcv(struct net *net, struct sk_buff_head *inputq);
|
||||
@@ -59,5 +61,11 @@ int tipc_sk_rht_init(struct net *net);
|
||||
void tipc_sk_rht_destroy(struct net *net);
|
||||
int tipc_nl_sk_dump(struct sk_buff *skb, struct netlink_callback *cb);
|
||||
int tipc_nl_publ_dump(struct sk_buff *skb, struct netlink_callback *cb);
|
||||
|
||||
int tipc_sk_fill_sock_diag(struct sk_buff *skb, struct tipc_sock *tsk,
|
||||
u32 sk_filter_state,
|
||||
u64 (*tipc_diag_gen_cookie)(struct sock *sk));
|
||||
int tipc_nl_sk_walk(struct sk_buff *skb, struct netlink_callback *cb,
|
||||
int (*skb_handler)(struct sk_buff *skb,
|
||||
struct netlink_callback *cb,
|
||||
struct tipc_sock *tsk));
|
||||
#endif
|
||||
|
Reference in New Issue
Block a user