| ... | ... | @@ -7067,6 +7067,153 @@ pub const ifreq = extern struct { |
| 7067 | 7067 | }, |
| 7068 | 7068 | }; |
| 7069 | 7069 | |
| 7070 | pub const PACKET = struct { |
| 7071 | pub const HOST = 0; |
| 7072 | pub const BROADCAST = 1; |
| 7073 | pub const MULTICAST = 2; |
| 7074 | pub const OTHERHOST = 3; |
| 7075 | pub const OUTGOING = 4; |
| 7076 | pub const LOOPBACK = 5; |
| 7077 | pub const USER = 6; |
| 7078 | pub const KERNEL = 7; |
| 7079 | |
| 7080 | pub const ADD_MEMBERSHIP = 1; |
| 7081 | pub const DROP_MEMBERSHIP = 2; |
| 7082 | pub const RECV_OUTPUT = 3; |
| 7083 | pub const RX_RING = 5; |
| 7084 | pub const STATISTICS = 6; |
| 7085 | pub const COPY_THRESH = 7; |
| 7086 | pub const AUXDATA = 8; |
| 7087 | pub const ORIGDEV = 9; |
| 7088 | pub const VERSION = 10; |
| 7089 | pub const HDRLEN = 11; |
| 7090 | pub const RESERVE = 12; |
| 7091 | pub const TX_RING = 13; |
| 7092 | pub const LOSS = 14; |
| 7093 | pub const VNET_HDR = 15; |
| 7094 | pub const TX_TIMESTAMP = 16; |
| 7095 | pub const TIMESTAMP = 17; |
| 7096 | pub const FANOUT = 18; |
| 7097 | pub const TX_HAS_OFF = 19; |
| 7098 | pub const QDISC_BYPASS = 20; |
| 7099 | pub const ROLLOVER_STATS = 21; |
| 7100 | pub const FANOUT_DATA = 22; |
| 7101 | pub const IGNORE_OUTGOING = 23; |
| 7102 | pub const VNET_HDR_SZ = 24; |
| 7103 | |
| 7104 | pub const FANOUT_HASH = 0; |
| 7105 | pub const FANOUT_LB = 1; |
| 7106 | pub const FANOUT_CPU = 2; |
| 7107 | pub const FANOUT_ROLLOVER = 3; |
| 7108 | pub const FANOUT_RND = 4; |
| 7109 | pub const FANOUT_QM = 5; |
| 7110 | pub const FANOUT_CBPF = 6; |
| 7111 | pub const FANOUT_EBPF = 7; |
| 7112 | pub const FANOUT_FLAG_ROLLOVER = 0x1000; |
| 7113 | pub const FANOUT_FLAG_UNIQUEID = 0x2000; |
| 7114 | pub const FANOUT_FLAG_IGNORE_OUTGOING = 0x4000; |
| 7115 | pub const FANOUT_FLAG_DEFRAG = 0x8000; |
| 7116 | }; |
| 7117 | |
| 7118 | pub const tpacket_versions = enum(u32) { |
| 7119 | V1 = 0, |
| 7120 | V2 = 1, |
| 7121 | V3 = 2, |
| 7122 | }; |
| 7123 | |
| 7124 | pub const tpacket_req3 = extern struct { |
| 7125 | block_size: c_uint, // Minimal size of contiguous block |
| 7126 | block_nr: c_uint, // Number of blocks |
| 7127 | frame_size: c_uint, // Size of frame |
| 7128 | frame_nr: c_uint, // Total number of frames |
| 7129 | retire_blk_tov: c_uint, // Timeout in msecs |
| 7130 | sizeof_priv: c_uint, // Offset to private data area |
| 7131 | feature_req_word: c_uint, |
| 7132 | }; |
| 7133 | |
| 7134 | pub const tpacket_bd_ts = extern struct { |
| 7135 | sec: c_uint, |
| 7136 | frac: extern union { |
| 7137 | usec: c_uint, |
| 7138 | nsec: c_uint, |
| 7139 | }, |
| 7140 | }; |
| 7141 | |
| 7142 | pub const TP_STATUS = extern union { |
| 7143 | rx: packed struct(u32) { |
| 7144 | USER: bool, |
| 7145 | COPY: bool, |
| 7146 | LOSING: bool, |
| 7147 | CSUMNOTREADY: bool, |
| 7148 | VLAN_VALID: bool, |
| 7149 | BLK_TMO: bool, |
| 7150 | VLAN_TPID_VALID: bool, |
| 7151 | CSUM_VALID: bool, |
| 7152 | GSO_TCP: bool, |
| 7153 | _: u20, |
| 7154 | TS_SOFTWARE: bool, |
| 7155 | TS_SYS_HARDWARE: bool, |
| 7156 | TS_RAW_HARDWARE: bool, |
| 7157 | }, |
| 7158 | tx: packed struct(u32) { |
| 7159 | SEND_REQUEST: bool, |
| 7160 | SENDING: bool, |
| 7161 | WRONG_FORMAT: bool, |
| 7162 | _: u26, |
| 7163 | TS_SOFTWARE: bool, |
| 7164 | TS_SYS_HARDWARE: bool, |
| 7165 | TS_RAW_HARDWARE: bool, |
| 7166 | }, |
| 7167 | }; |
| 7168 | |
| 7169 | pub const tpacket_hdr_v1 = extern struct { |
| 7170 | block_status: TP_STATUS, |
| 7171 | num_pkts: u32, |
| 7172 | offset_to_first_pkt: u32, |
| 7173 | blk_len: u32, |
| 7174 | seq_num: u64 align(8), |
| 7175 | ts_first_pkt: tpacket_bd_ts, |
| 7176 | ts_last_pkt: tpacket_bd_ts, |
| 7177 | }; |
| 7178 | |
| 7179 | pub const tpacket_bd_header_u = extern union { |
| 7180 | bh1: tpacket_hdr_v1, |
| 7181 | }; |
| 7182 | |
| 7183 | pub const tpacket_block_desc = extern struct { |
| 7184 | version: u32, |
| 7185 | offset_to_priv: u32, |
| 7186 | hdr: tpacket_bd_header_u, |
| 7187 | }; |
| 7188 | |
| 7189 | pub const tpacket_hdr_variant1 = extern struct { |
| 7190 | rxhash: u32, |
| 7191 | vlan_tci: u32, |
| 7192 | vlan_tpid: u16, |
| 7193 | padding: u16, |
| 7194 | }; |
| 7195 | |
| 7196 | pub const tpacket3_hdr = extern struct { |
| 7197 | next_offset: u32, |
| 7198 | sec: u32, |
| 7199 | nsec: u32, |
| 7200 | snaplen: u32, |
| 7201 | len: u32, |
| 7202 | status: u32, |
| 7203 | mac: u16, |
| 7204 | net: u16, |
| 7205 | variant: extern union { |
| 7206 | hv1: tpacket_hdr_variant1, |
| 7207 | }, |
| 7208 | padding: [8]u8, |
| 7209 | }; |
| 7210 | |
| 7211 | pub const tpacket_stats_v3 = extern struct { |
| 7212 | packets: c_uint, |
| 7213 | drops: c_uint, |
| 7214 | freeze_q_cnt: c_uint, |
| 7215 | }; |
| 7216 | |
| 7070 | 7217 | // doc comments copied from musl |
| 7071 | 7218 | pub const rlimit_resource = if (native_arch.isMIPS()) enum(c_int) { |
| 7072 | 7219 | /// Per-process CPU limit, in seconds. |