tools/testing/selftests/net/psock_snd.c
Source file repositories/reference/linux-study-clean/tools/testing/selftests/net/psock_snd.c
File Facts
- System
- Linux kernel
- Corpus path
tools/testing/selftests/net/psock_snd.c- Extension
.c- Size
- 8740 bytes
- Lines
- 400
- Domain
- Support Tooling And Documentation
- Bucket
- tools
- Inferred role
- Support Tooling And Documentation: implementation source
- Status
- source implementation candidate
Why This File Exists
Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.
- Defines or uses C structs; map object ownership, embedded links, reference counts, and lock ownership.
Dependency Surface
arpa/inet.herrno.herror.hfcntl.hlimits.hlinux/filter.hlinux/bpf.hlinux/if_packet.hlinux/if_vlan.hlinux/virtio_net.hnet/if.hnet/ethernet.hnetinet/ip.hnetinet/udp.hpoll.hsched.hstdbool.hstdint.hstdio.hstdlib.hstring.hsys/mman.hsys/socket.hsys/stat.hsys/types.hunistd.hpsock_lib.h
Detected Declarations
function add_csum_hwordfunction build_ip_csumfunction build_vnet_headerfunction build_eth_headerfunction build_ipv4_headerfunction build_udp_headerfunction build_packetfunction do_bindfunction do_sendfunction do_txfunction setup_rxfunction do_rxfunction setup_snifferfunction parse_optsfunction run_testfunction main
Annotated Snippet
switch (c) {
case 'b':
cfg_use_bind = true;
break;
case 'c':
cfg_use_csum_off = true;
break;
case 'C':
cfg_use_csum_off_bad = true;
break;
case 'd':
cfg_use_dgram = true;
break;
case 'g':
cfg_use_gso = true;
break;
case 'l':
cfg_payload_len = strtoul(optarg, NULL, 0);
break;
case 'q':
cfg_use_qdisc_bypass = true;
break;
case 't':
cfg_truncate_len = strtoul(optarg, NULL, 0);
break;
case 'v':
cfg_use_vnet = true;
break;
case 'V':
cfg_use_vlan = true;
break;
default:
error(1, 0, "%s: parse error", argv[0]);
}
}
if (cfg_use_vlan && cfg_use_dgram)
error(1, 0, "option vlan (-V) conflicts with dgram (-d)");
if (cfg_use_csum_off && !cfg_use_vnet)
error(1, 0, "option csum offload (-c) requires vnet (-v)");
if (cfg_use_csum_off_bad && !cfg_use_csum_off)
error(1, 0, "option csum bad (-C) requires csum offload (-c)");
if (cfg_use_gso && !cfg_use_csum_off)
error(1, 0, "option gso (-g) requires csum offload (-c)");
}
static void run_test(void)
{
int fdr, fds, total_len;
fdr = setup_rx();
fds = setup_sniffer();
total_len = do_tx();
/* BPF filter accepts only this length, vlan changes MAC */
if (cfg_payload_len == DATA_LEN && !cfg_use_vlan)
do_rx(fds, total_len - sizeof(struct virtio_net_hdr),
tbuf + sizeof(struct virtio_net_hdr));
do_rx(fdr, cfg_payload_len, tbuf + total_len - cfg_payload_len);
if (close(fds))
error(1, errno, "close s");
if (close(fdr))
error(1, errno, "close r");
}
int main(int argc, char **argv)
{
parse_opts(argc, argv);
if (system("ip link set dev lo mtu 1500"))
error(1, errno, "ip link set mtu");
if (system("ip addr add dev lo 172.17.0.1/24"))
error(1, errno, "ip addr add");
if (system("sysctl -w net.ipv4.conf.lo.accept_local=1"))
error(1, errno, "sysctl lo.accept_local");
run_test();
fprintf(stderr, "OK\n\n");
return 0;
}
Annotation
- Immediate include surface: `arpa/inet.h`, `errno.h`, `error.h`, `fcntl.h`, `limits.h`, `linux/filter.h`, `linux/bpf.h`, `linux/if_packet.h`.
- Detected declarations: `function add_csum_hword`, `function build_ip_csum`, `function build_vnet_header`, `function build_eth_header`, `function build_ipv4_header`, `function build_udp_header`, `function build_packet`, `function do_bind`, `function do_send`, `function do_tx`.
- Atlas domain: Support Tooling And Documentation / tools.
- Implementation status: source implementation candidate.
Implementation Notes
- This generated page is the file-by-file coverage layer; curated subsystem chapters should link here when they synthesize a multi-file control flow.
- Core OS pages should be promoted from atlas-only to deep-reviewed when they explain data structures, invariants, locking, lifecycle, and C implementation snippets.
- Driver-family pages are intentionally pattern-oriented unless they are part of the selected PCIe/NVMe representative device path.