packet: Report more packet sk info via diag module
This reports in one rtattr message all the other scalar values, that can be set on a packet socket with setsockopt. Signed-off-by: Pavel Emelyanov <xemul@parallels.com> Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:
parent
96ec632714
commit
8a360be0c5
2 changed files with 56 additions and 0 deletions
|
@ -7,6 +7,31 @@
|
|||
|
||||
#include "internal.h"
|
||||
|
||||
static int pdiag_put_info(const struct packet_sock *po, struct sk_buff *nlskb)
|
||||
{
|
||||
struct packet_diag_info pinfo;
|
||||
|
||||
pinfo.pdi_index = po->ifindex;
|
||||
pinfo.pdi_version = po->tp_version;
|
||||
pinfo.pdi_reserve = po->tp_reserve;
|
||||
pinfo.pdi_copy_thresh = po->copy_thresh;
|
||||
pinfo.pdi_tstamp = po->tp_tstamp;
|
||||
|
||||
pinfo.pdi_flags = 0;
|
||||
if (po->running)
|
||||
pinfo.pdi_flags |= PDI_RUNNING;
|
||||
if (po->auxdata)
|
||||
pinfo.pdi_flags |= PDI_AUXDATA;
|
||||
if (po->origdev)
|
||||
pinfo.pdi_flags |= PDI_ORIGDEV;
|
||||
if (po->has_vnet_hdr)
|
||||
pinfo.pdi_flags |= PDI_VNETHDR;
|
||||
if (po->tp_loss)
|
||||
pinfo.pdi_flags |= PDI_LOSS;
|
||||
|
||||
return nla_put(nlskb, PACKET_DIAG_INFO, sizeof(pinfo), &pinfo);
|
||||
}
|
||||
|
||||
static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, struct packet_diag_req *req,
|
||||
u32 pid, u32 seq, u32 flags, int sk_ino)
|
||||
{
|
||||
|
@ -25,7 +50,15 @@ static int sk_diag_fill(struct sock *sk, struct sk_buff *skb, struct packet_diag
|
|||
rp->pdiag_ino = sk_ino;
|
||||
sock_diag_save_cookie(sk, rp->pdiag_cookie);
|
||||
|
||||
if ((req->pdiag_show & PACKET_SHOW_INFO) &&
|
||||
pdiag_put_info(po, skb))
|
||||
goto out_nlmsg_trim;
|
||||
|
||||
return nlmsg_end(skb, nlh);
|
||||
|
||||
out_nlmsg_trim:
|
||||
nlmsg_cancel(skb, nlh);
|
||||
return -EMSGSIZE;
|
||||
}
|
||||
|
||||
static int packet_diag_dump(struct sk_buff *skb, struct netlink_callback *cb)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue