net-timestamp: no-payload option
Add timestamping option SOF_TIMESTAMPING_OPT_TSONLY. For transmit timestamps, this loops timestamps on top of empty packets. Doing so reduces the pressure on SO_RCVBUF. Payload inspection and cmsg reception (aside from timestamps) are no longer possible. This works together with a follow on patch that allows administrators to only allow tx timestamping if it does not loop payload or metadata. Signed-off-by: Willem de Bruijn <willemb@google.com> ---- Changes (rfc -> v1) - add documentation - remove unnecessary skb->len test (thanks to Richard Cochran) Signed-off-by: David S. Miller <davem@davemloft.net>
This commit is contained in:

committed by
David S. Miller

parent
9766e97af1
commit
49ca0d8bfa
@@ -483,7 +483,7 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
|
||||
|
||||
serr = SKB_EXT_ERR(skb);
|
||||
|
||||
if (sin) {
|
||||
if (sin && skb->len) {
|
||||
sin->sin_family = AF_INET;
|
||||
sin->sin_addr.s_addr = *(__be32 *)(skb_network_header(skb) +
|
||||
serr->addr_offset);
|
||||
@@ -496,8 +496,9 @@ int ip_recv_error(struct sock *sk, struct msghdr *msg, int len, int *addr_len)
|
||||
sin = &errhdr.offender;
|
||||
memset(sin, 0, sizeof(*sin));
|
||||
|
||||
if (serr->ee.ee_origin == SO_EE_ORIGIN_ICMP ||
|
||||
ipv4_pktinfo_prepare_errqueue(sk, skb, serr->ee.ee_origin)) {
|
||||
if (skb->len &&
|
||||
(serr->ee.ee_origin == SO_EE_ORIGIN_ICMP ||
|
||||
ipv4_pktinfo_prepare_errqueue(sk, skb, serr->ee.ee_origin))) {
|
||||
sin->sin_family = AF_INET;
|
||||
sin->sin_addr.s_addr = ip_hdr(skb)->saddr;
|
||||
if (inet_sk(sk)->cmsg_flags)
|
||||
|
Reference in New Issue
Block a user