diff --git a/src/header/netinet_in/cbindgen.toml b/src/header/netinet_in/cbindgen.toml index d88dc7f..24fe4bc 100644 --- a/src/header/netinet_in/cbindgen.toml +++ b/src/header/netinet_in/cbindgen.toml @@ -113,6 +113,7 @@ include = [ "ip_mreq_source", "group_req", "group_source_req", + "in6_pktinfo", ] [export.rename] diff --git a/src/header/netinet_in/mod.rs b/src/header/netinet_in/mod.rs index 0e4ced5..9a2a913 100644 --- a/src/header/netinet_in/mod.rs +++ b/src/header/netinet_in/mod.rs @@ -54,6 +54,34 @@ pub struct ipv6_mreq { pub ipv6mr_interface: u32, } +/// See . +#[repr(C)] +pub struct in6_pktinfo { + pub ipi6_addr: in6_addr, + pub ipi6_ifindex: u32, +} + +impl Clone for in6_pktinfo { + fn clone(&self) -> Self { + Self { + ipi6_addr: in6_addr { s6_addr: self.ipi6_addr.s6_addr }, + ipi6_ifindex: self.ipi6_ifindex, + } + } +} + +impl Default for in6_pktinfo { + fn default() -> Self { + Self { + ipi6_addr: in6_addr { s6_addr: [0; 16] }, + ipi6_ifindex: 0, + } + } +} + +#[unsafe(no_mangle)] +pub extern "C" fn _cbindgen_export_in6_pktinfo(in6_pktinfo: in6_pktinfo) {} + // Address String Lengths /// See . pub const INET_ADDRSTRLEN: c_int = 16; @@ -106,6 +134,10 @@ pub const IPV6_DROP_MEMBERSHIP: c_int = 21; pub const IPV6_LEAVE_GROUP: c_int = 21; /// See . pub const IPV6_V6ONLY: c_int = 26; +/// Non-POSIX, see . +pub const IPV6_PKTINFO: c_int = 50; +/// Non-POSIX, see . +pub const IPV6_RECVPKTINFO: c_int = 49; /// Non-POSIX, see . pub const IP_MULTICAST_IF: c_int = 32; /// Non-POSIX, see .