Release 4.7 include/linux/sock_diag.h
#ifndef __SOCK_DIAG_H__
#define __SOCK_DIAG_H__
#include <linux/netlink.h>
#include <linux/user_namespace.h>
#include <net/net_namespace.h>
#include <net/sock.h>
#include <uapi/linux/sock_diag.h>
struct sk_buff;
struct nlmsghdr;
struct sock;
struct sock_diag_handler {
__u8 family;
int (*dump)(struct sk_buff *skb, struct nlmsghdr *nlh);
int (*get_info)(struct sk_buff *skb, struct sock *sk);
int (*destroy)(struct sk_buff *skb, struct nlmsghdr *nlh);
};
int sock_diag_register(const struct sock_diag_handler *h);
void sock_diag_unregister(const struct sock_diag_handler *h);
void sock_diag_register_inet_compat(int (*fn)(struct sk_buff *skb, struct nlmsghdr *nlh));
void sock_diag_unregister_inet_compat(int (*fn)(struct sk_buff *skb, struct nlmsghdr *nlh));
int sock_diag_check_cookie(struct sock *sk, const __u32 *cookie);
void sock_diag_save_cookie(struct sock *sk, __u32 *cookie);
int sock_diag_put_meminfo(struct sock *sk, struct sk_buff *skb, int attr);
int sock_diag_put_filterinfo(bool may_report_filterinfo, struct sock *sk,
struct sk_buff *skb, int attrtype);
static inline
enum sknetlink_groups sock_diag_destroy_group(const struct sock *sk)
{
switch (sk->sk_family) {
case AF_INET:
if (sk->sk_type == SOCK_RAW)
return SKNLGRP_NONE;
switch (sk->sk_protocol) {
case IPPROTO_TCP:
return SKNLGRP_INET_TCP_DESTROY;
case IPPROTO_UDP:
return SKNLGRP_INET_UDP_DESTROY;
default:
return SKNLGRP_NONE;
}
case AF_INET6:
if (sk->sk_type == SOCK_RAW)
return SKNLGRP_NONE;
switch (sk->sk_protocol) {
case IPPROTO_TCP:
return SKNLGRP_INET6_TCP_DESTROY;
case IPPROTO_UDP:
return SKNLGRP_INET6_UDP_DESTROY;
default:
return SKNLGRP_NONE;
}
default:
return SKNLGRP_NONE;
}
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
craig gallek | craig gallek | 80 | 78.43% | 1 | 50.00% |
willem de bruijn | willem de bruijn | 22 | 21.57% | 1 | 50.00% |
| Total | 102 | 100.00% | 2 | 100.00% |
static inline
bool sock_diag_has_destroy_listeners(const struct sock *sk)
{
const struct net *n = sock_net(sk);
const enum sknetlink_groups group = sock_diag_destroy_group(sk);
return group != SKNLGRP_NONE && n->diag_nlsk &&
netlink_has_listeners(n->diag_nlsk, group);
}
Contributors
| Person | Tokens | Prop | Commits | CommitProp |
craig gallek | craig gallek | 52 | 100.00% | 1 | 100.00% |
| Total | 52 | 100.00% | 1 | 100.00% |
void sock_diag_broadcast_destroy(struct sock *sk);
int sock_diag_destroy(struct sock *sk, int err);
#endif
Overall Contributors
| Person | Tokens | Prop | Commits | CommitProp |
craig gallek | craig gallek | 167 | 42.60% | 1 | 7.69% |
pavel emelianov | pavel emelianov | 143 | 36.48% | 4 | 30.77% |
lorenzo colitti | lorenzo colitti | 29 | 7.40% | 1 | 7.69% |
willem de bruijn | willem de bruijn | 22 | 5.61% | 1 | 7.69% |
nicolas dichtel | nicolas dichtel | 20 | 5.10% | 1 | 7.69% |
eric dumazet | eric dumazet | 5 | 1.28% | 2 | 15.38% |
eric w. biederman | eric w. biederman | 3 | 0.77% | 1 | 7.69% |
shan wei | shan wei | 2 | 0.51% | 1 | 7.69% |
david howells | david howells | 1 | 0.26% | 1 | 7.69% |
| Total | 392 | 100.00% | 13 | 100.00% |
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.