Skip to content

Commit

Permalink
add generated tcx return codes
Browse files Browse the repository at this point in the history
Add the return codes defined in the bpf.h
`tcx_action_base` enum.  This allows users
to write tc prograns which correctly interacti with
the new tcx api.

Signed-off-by: astoycos <[email protected]>
  • Loading branch information
astoycos committed Apr 5, 2024
1 parent df9fe94 commit 30ce157
Show file tree
Hide file tree
Showing 12 changed files with 137 additions and 68 deletions.
2 changes: 1 addition & 1 deletion aya-obj/src/generated/btf_internal_bindings.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.69.4 */
/* automatically generated by rust-bindgen 0.69.1 */

pub type __u8 = ::core::ffi::c_uchar;
pub type __u16 = ::core::ffi::c_ushort;
Expand Down
6 changes: 4 additions & 2 deletions aya-obj/src/generated/linux_bindings_aarch64.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.69.4 */
/* automatically generated by rust-bindgen 0.69.1 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
Expand Down Expand Up @@ -2209,6 +2209,7 @@ pub union perf_event_mmap_page__bindgen_ty_1 {
pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
pub _bitfield_align_1: [u64; 0],
Expand Down Expand Up @@ -2419,7 +2420,8 @@ pub const TCA_HW_OFFLOAD: _bindgen_ty_172 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_172 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_172 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_172 = 15;
pub const __TCA_MAX: _bindgen_ty_172 = 16;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_172 = 16;
pub const __TCA_MAX: _bindgen_ty_172 = 17;
pub type _bindgen_ty_172 = ::core::ffi::c_uint;
pub const AYA_PERF_EVENT_IOC_ENABLE: ::core::ffi::c_int = 9216;
pub const AYA_PERF_EVENT_IOC_DISABLE: ::core::ffi::c_int = 9217;
Expand Down
6 changes: 4 additions & 2 deletions aya-obj/src/generated/linux_bindings_armv7.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.69.4 */
/* automatically generated by rust-bindgen 0.69.1 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
Expand Down Expand Up @@ -2209,6 +2209,7 @@ pub union perf_event_mmap_page__bindgen_ty_1 {
pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
pub _bitfield_align_1: [u64; 0],
Expand Down Expand Up @@ -2419,7 +2420,8 @@ pub const TCA_HW_OFFLOAD: _bindgen_ty_172 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_172 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_172 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_172 = 15;
pub const __TCA_MAX: _bindgen_ty_172 = 16;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_172 = 16;
pub const __TCA_MAX: _bindgen_ty_172 = 17;
pub type _bindgen_ty_172 = ::core::ffi::c_uint;
pub const AYA_PERF_EVENT_IOC_ENABLE: ::core::ffi::c_int = 9216;
pub const AYA_PERF_EVENT_IOC_DISABLE: ::core::ffi::c_int = 9217;
Expand Down
6 changes: 4 additions & 2 deletions aya-obj/src/generated/linux_bindings_riscv64.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.69.4 */
/* automatically generated by rust-bindgen 0.69.1 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
Expand Down Expand Up @@ -2209,6 +2209,7 @@ pub union perf_event_mmap_page__bindgen_ty_1 {
pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
pub _bitfield_align_1: [u64; 0],
Expand Down Expand Up @@ -2419,7 +2420,8 @@ pub const TCA_HW_OFFLOAD: _bindgen_ty_172 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_172 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_172 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_172 = 15;
pub const __TCA_MAX: _bindgen_ty_172 = 16;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_172 = 16;
pub const __TCA_MAX: _bindgen_ty_172 = 17;
pub type _bindgen_ty_172 = ::core::ffi::c_uint;
pub const AYA_PERF_EVENT_IOC_ENABLE: ::core::ffi::c_int = 9216;
pub const AYA_PERF_EVENT_IOC_DISABLE: ::core::ffi::c_int = 9217;
Expand Down
6 changes: 4 additions & 2 deletions aya-obj/src/generated/linux_bindings_x86_64.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
/* automatically generated by rust-bindgen 0.69.4 */
/* automatically generated by rust-bindgen 0.69.1 */

#[repr(C)]
#[derive(Copy, Clone, Debug, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
Expand Down Expand Up @@ -2209,6 +2209,7 @@ pub union perf_event_mmap_page__bindgen_ty_1 {
pub __bindgen_anon_1: perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1,
}
#[repr(C)]
#[repr(align(8))]
#[derive(Debug, Copy, Clone)]
pub struct perf_event_mmap_page__bindgen_ty_1__bindgen_ty_1 {
pub _bitfield_align_1: [u64; 0],
Expand Down Expand Up @@ -2419,7 +2420,8 @@ pub const TCA_HW_OFFLOAD: _bindgen_ty_172 = 12;
pub const TCA_INGRESS_BLOCK: _bindgen_ty_172 = 13;
pub const TCA_EGRESS_BLOCK: _bindgen_ty_172 = 14;
pub const TCA_DUMP_FLAGS: _bindgen_ty_172 = 15;
pub const __TCA_MAX: _bindgen_ty_172 = 16;
pub const TCA_EXT_WARN_MSG: _bindgen_ty_172 = 16;
pub const __TCA_MAX: _bindgen_ty_172 = 17;
pub type _bindgen_ty_172 = ::core::ffi::c_uint;
pub const AYA_PERF_EVENT_IOC_ENABLE: ::core::ffi::c_int = 9216;
pub const AYA_PERF_EVENT_IOC_DISABLE: ::core::ffi::c_int = 9217;
Expand Down
49 changes: 34 additions & 15 deletions ebpf/aya-ebpf-bindings/src/aarch64/bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,11 @@ pub const SO_PREFER_BUSY_POLL: u32 = 69;
pub const SO_BUSY_POLL_BUDGET: u32 = 70;
pub const SO_NETNS_COOKIE: u32 = 71;
pub const SO_BUF_LOCK: u32 = 72;
pub const SO_TIMESTAMP: u32 = 29;
pub const SO_TIMESTAMPNS: u32 = 35;
pub const SO_TIMESTAMPING: u32 = 37;
pub const SO_RCVTIMEO: u32 = 20;
pub const SO_SNDTIMEO: u32 = 21;
pub const SO_RESERVE_MEM: u32 = 73;
pub const SO_TXREHASH: u32 = 74;
pub const SO_RCVMARK: u32 = 75;
pub const SO_PASSPIDFD: u32 = 76;
pub const SO_PEERPIDFD: u32 = 77;
pub type __u8 = ::aya_ebpf_cty::c_uchar;
pub type __s16 = ::aya_ebpf_cty::c_short;
pub type __u16 = ::aya_ebpf_cty::c_ushort;
Expand All @@ -311,11 +311,6 @@ pub struct linux_binprm {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pt_regs {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tcphdr {
_unused: [u8; 0],
}
Expand Down Expand Up @@ -1720,6 +1715,13 @@ pub struct bpf_sock_tuple__bindgen_ty_1__bindgen_ty_2 {
pub sport: __be16,
pub dport: __be16,
}
pub mod tcx_action_base {
pub type Type = ::aya_ebpf_cty::c_int;
pub const TCX_NEXT: Type = -1;
pub const TCX_PASS: Type = 0;
pub const TCX_DROP: Type = 2;
pub const TCX_REDIRECT: Type = 7;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_xdp_sock {
Expand Down Expand Up @@ -2744,11 +2746,28 @@ pub struct bpf_iter_num {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct user_pt_regs {
pub regs: [__u64; 31usize],
pub sp: __u64,
pub pc: __u64,
pub pstate: __u64,
pub struct pt_regs {
pub r15: ::aya_ebpf_cty::c_ulong,
pub r14: ::aya_ebpf_cty::c_ulong,
pub r13: ::aya_ebpf_cty::c_ulong,
pub r12: ::aya_ebpf_cty::c_ulong,
pub rbp: ::aya_ebpf_cty::c_ulong,
pub rbx: ::aya_ebpf_cty::c_ulong,
pub r11: ::aya_ebpf_cty::c_ulong,
pub r10: ::aya_ebpf_cty::c_ulong,
pub r9: ::aya_ebpf_cty::c_ulong,
pub r8: ::aya_ebpf_cty::c_ulong,
pub rax: ::aya_ebpf_cty::c_ulong,
pub rcx: ::aya_ebpf_cty::c_ulong,
pub rdx: ::aya_ebpf_cty::c_ulong,
pub rsi: ::aya_ebpf_cty::c_ulong,
pub rdi: ::aya_ebpf_cty::c_ulong,
pub orig_rax: ::aya_ebpf_cty::c_ulong,
pub rip: ::aya_ebpf_cty::c_ulong,
pub cs: ::aya_ebpf_cty::c_ulong,
pub eflags: ::aya_ebpf_cty::c_ulong,
pub rsp: ::aya_ebpf_cty::c_ulong,
pub ss: ::aya_ebpf_cty::c_ulong,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)]
Expand Down
34 changes: 33 additions & 1 deletion ebpf/aya-ebpf-bindings/src/armv7/bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,11 @@ pub const SO_PREFER_BUSY_POLL: u32 = 69;
pub const SO_BUSY_POLL_BUDGET: u32 = 70;
pub const SO_NETNS_COOKIE: u32 = 71;
pub const SO_BUF_LOCK: u32 = 72;
pub const SO_RESERVE_MEM: u32 = 73;
pub const SO_TXREHASH: u32 = 74;
pub const SO_RCVMARK: u32 = 75;
pub const SO_PASSPIDFD: u32 = 76;
pub const SO_PEERPIDFD: u32 = 77;
pub type __u8 = ::aya_ebpf_cty::c_uchar;
pub type __s16 = ::aya_ebpf_cty::c_short;
pub type __u16 = ::aya_ebpf_cty::c_ushort;
Expand Down Expand Up @@ -1712,6 +1717,13 @@ pub struct bpf_sock_tuple__bindgen_ty_1__bindgen_ty_2 {
pub sport: __be16,
pub dport: __be16,
}
pub mod tcx_action_base {
pub type Type = ::aya_ebpf_cty::c_int;
pub const TCX_NEXT: Type = -1;
pub const TCX_PASS: Type = 0;
pub const TCX_DROP: Type = 2;
pub const TCX_REDIRECT: Type = 7;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_xdp_sock {
Expand Down Expand Up @@ -2752,7 +2764,27 @@ pub struct bpf_iter_num {
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pt_regs {
pub uregs: [::aya_ebpf_cty::c_long; 18usize],
pub r15: ::aya_ebpf_cty::c_ulong,
pub r14: ::aya_ebpf_cty::c_ulong,
pub r13: ::aya_ebpf_cty::c_ulong,
pub r12: ::aya_ebpf_cty::c_ulong,
pub rbp: ::aya_ebpf_cty::c_ulong,
pub rbx: ::aya_ebpf_cty::c_ulong,
pub r11: ::aya_ebpf_cty::c_ulong,
pub r10: ::aya_ebpf_cty::c_ulong,
pub r9: ::aya_ebpf_cty::c_ulong,
pub r8: ::aya_ebpf_cty::c_ulong,
pub rax: ::aya_ebpf_cty::c_ulong,
pub rcx: ::aya_ebpf_cty::c_ulong,
pub rdx: ::aya_ebpf_cty::c_ulong,
pub rsi: ::aya_ebpf_cty::c_ulong,
pub rdi: ::aya_ebpf_cty::c_ulong,
pub orig_rax: ::aya_ebpf_cty::c_ulong,
pub rip: ::aya_ebpf_cty::c_ulong,
pub cs: ::aya_ebpf_cty::c_ulong,
pub eflags: ::aya_ebpf_cty::c_ulong,
pub rsp: ::aya_ebpf_cty::c_ulong,
pub ss: ::aya_ebpf_cty::c_ulong,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)]
Expand Down
5 changes: 5 additions & 0 deletions ebpf/aya-ebpf-bindings/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,11 @@ pub mod bindings {
pub const TC_ACT_VALUE_MAX: i32 = crate::gen::bindings::TC_ACT_VALUE_MAX as i32;
pub const TC_ACT_EXT_VAL_MASK: i32 = 268435455;

pub const TCX_NEXT: i32 = crate::gen::bindings::tcx_action_base::TCX_NEXT;
pub const TCX_PASS: i32 = crate::gen::bindings::tcx_action_base::TCX_PASS;
pub const TCX_DROP: i32 = crate::gen::bindings::tcx_action_base::TCX_DROP;
pub const TCX_REDIRECT: i32 = crate::gen::bindings::tcx_action_base::TCX_REDIRECT;

#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_map_def {
Expand Down
77 changes: 34 additions & 43 deletions ebpf/aya-ebpf-bindings/src/riscv64/bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,11 +284,11 @@ pub const SO_PREFER_BUSY_POLL: u32 = 69;
pub const SO_BUSY_POLL_BUDGET: u32 = 70;
pub const SO_NETNS_COOKIE: u32 = 71;
pub const SO_BUF_LOCK: u32 = 72;
pub const SO_TIMESTAMP: u32 = 29;
pub const SO_TIMESTAMPNS: u32 = 35;
pub const SO_TIMESTAMPING: u32 = 37;
pub const SO_RCVTIMEO: u32 = 20;
pub const SO_SNDTIMEO: u32 = 21;
pub const SO_RESERVE_MEM: u32 = 73;
pub const SO_TXREHASH: u32 = 74;
pub const SO_RCVMARK: u32 = 75;
pub const SO_PASSPIDFD: u32 = 76;
pub const SO_PEERPIDFD: u32 = 77;
pub type __u8 = ::aya_ebpf_cty::c_uchar;
pub type __s16 = ::aya_ebpf_cty::c_short;
pub type __u16 = ::aya_ebpf_cty::c_ushort;
Expand All @@ -311,11 +311,6 @@ pub struct linux_binprm {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct pt_regs {
_unused: [u8; 0],
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct tcphdr {
_unused: [u8; 0],
}
Expand Down Expand Up @@ -1720,6 +1715,13 @@ pub struct bpf_sock_tuple__bindgen_ty_1__bindgen_ty_2 {
pub sport: __be16,
pub dport: __be16,
}
pub mod tcx_action_base {
pub type Type = ::aya_ebpf_cty::c_int;
pub const TCX_NEXT: Type = -1;
pub const TCX_PASS: Type = 0;
pub const TCX_DROP: Type = 2;
pub const TCX_REDIRECT: Type = 7;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_xdp_sock {
Expand Down Expand Up @@ -2744,39 +2746,28 @@ pub struct bpf_iter_num {
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct user_regs_struct {
pub pc: ::aya_ebpf_cty::c_ulong,
pub ra: ::aya_ebpf_cty::c_ulong,
pub sp: ::aya_ebpf_cty::c_ulong,
pub gp: ::aya_ebpf_cty::c_ulong,
pub tp: ::aya_ebpf_cty::c_ulong,
pub t0: ::aya_ebpf_cty::c_ulong,
pub t1: ::aya_ebpf_cty::c_ulong,
pub t2: ::aya_ebpf_cty::c_ulong,
pub s0: ::aya_ebpf_cty::c_ulong,
pub s1: ::aya_ebpf_cty::c_ulong,
pub a0: ::aya_ebpf_cty::c_ulong,
pub a1: ::aya_ebpf_cty::c_ulong,
pub a2: ::aya_ebpf_cty::c_ulong,
pub a3: ::aya_ebpf_cty::c_ulong,
pub a4: ::aya_ebpf_cty::c_ulong,
pub a5: ::aya_ebpf_cty::c_ulong,
pub a6: ::aya_ebpf_cty::c_ulong,
pub a7: ::aya_ebpf_cty::c_ulong,
pub s2: ::aya_ebpf_cty::c_ulong,
pub s3: ::aya_ebpf_cty::c_ulong,
pub s4: ::aya_ebpf_cty::c_ulong,
pub s5: ::aya_ebpf_cty::c_ulong,
pub s6: ::aya_ebpf_cty::c_ulong,
pub s7: ::aya_ebpf_cty::c_ulong,
pub s8: ::aya_ebpf_cty::c_ulong,
pub s9: ::aya_ebpf_cty::c_ulong,
pub s10: ::aya_ebpf_cty::c_ulong,
pub s11: ::aya_ebpf_cty::c_ulong,
pub t3: ::aya_ebpf_cty::c_ulong,
pub t4: ::aya_ebpf_cty::c_ulong,
pub t5: ::aya_ebpf_cty::c_ulong,
pub t6: ::aya_ebpf_cty::c_ulong,
pub struct pt_regs {
pub r15: ::aya_ebpf_cty::c_ulong,
pub r14: ::aya_ebpf_cty::c_ulong,
pub r13: ::aya_ebpf_cty::c_ulong,
pub r12: ::aya_ebpf_cty::c_ulong,
pub rbp: ::aya_ebpf_cty::c_ulong,
pub rbx: ::aya_ebpf_cty::c_ulong,
pub r11: ::aya_ebpf_cty::c_ulong,
pub r10: ::aya_ebpf_cty::c_ulong,
pub r9: ::aya_ebpf_cty::c_ulong,
pub r8: ::aya_ebpf_cty::c_ulong,
pub rax: ::aya_ebpf_cty::c_ulong,
pub rcx: ::aya_ebpf_cty::c_ulong,
pub rdx: ::aya_ebpf_cty::c_ulong,
pub rsi: ::aya_ebpf_cty::c_ulong,
pub rdi: ::aya_ebpf_cty::c_ulong,
pub orig_rax: ::aya_ebpf_cty::c_ulong,
pub rip: ::aya_ebpf_cty::c_ulong,
pub cs: ::aya_ebpf_cty::c_ulong,
pub eflags: ::aya_ebpf_cty::c_ulong,
pub rsp: ::aya_ebpf_cty::c_ulong,
pub ss: ::aya_ebpf_cty::c_ulong,
}
pub type sa_family_t = ::aya_ebpf_cty::c_ushort;
#[repr(C)]
Expand Down
12 changes: 12 additions & 0 deletions ebpf/aya-ebpf-bindings/src/x86_64/bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -284,6 +284,11 @@ pub const SO_PREFER_BUSY_POLL: u32 = 69;
pub const SO_BUSY_POLL_BUDGET: u32 = 70;
pub const SO_NETNS_COOKIE: u32 = 71;
pub const SO_BUF_LOCK: u32 = 72;
pub const SO_RESERVE_MEM: u32 = 73;
pub const SO_TXREHASH: u32 = 74;
pub const SO_RCVMARK: u32 = 75;
pub const SO_PASSPIDFD: u32 = 76;
pub const SO_PEERPIDFD: u32 = 77;
pub const SO_TIMESTAMP: u32 = 29;
pub const SO_TIMESTAMPNS: u32 = 35;
pub const SO_TIMESTAMPING: u32 = 37;
Expand Down Expand Up @@ -1715,6 +1720,13 @@ pub struct bpf_sock_tuple__bindgen_ty_1__bindgen_ty_2 {
pub sport: __be16,
pub dport: __be16,
}
pub mod tcx_action_base {
pub type Type = ::aya_ebpf_cty::c_int;
pub const TCX_NEXT: Type = -1;
pub const TCX_PASS: Type = 0;
pub const TCX_DROP: Type = 2;
pub const TCX_REDIRECT: Type = 7;
}
#[repr(C)]
#[derive(Debug, Copy, Clone)]
pub struct bpf_xdp_sock {
Expand Down
1 change: 1 addition & 0 deletions test/integration-test/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ pub const BPF_PROBE_READ: &[u8] =
pub const REDIRECT: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/redirect"));
pub const XDP_SEC: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/xdp_sec"));
pub const RING_BUF: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/ring_buf"));
pub const TCX_TEST: &[u8] = include_bytes_aligned!(concat!(env!("OUT_DIR"), "/tcx_test"));

#[cfg(test)]
mod tests;
Expand Down
1 change: 1 addition & 0 deletions xtask/src/codegen/aya_ebpf_bindings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ pub fn codegen(opts: &SysrootOptions, libbpf_dir: &Path) -> Result<(), anyhow::E
"user_pt_regs",
"user_regs_struct",
"xdp_action",
"tcx_action_base",
];
let vars = ["BPF_.*", "bpf_.*", "TC_ACT_.*", "SOL_SOCKET", "SO_.*"];

Expand Down

0 comments on commit 30ce157

Please sign in to comment.