diff --git a/changelog/2736.changed.md b/changelog/2736.changed.md new file mode 100644 index 0000000000..e7423ae6fc --- /dev/null +++ b/changelog/2736.changed.md @@ -0,0 +1 @@ +Changed the Ipv6MembershipRequest::new function to accept an interface index. diff --git a/src/sys/socket/mod.rs b/src/sys/socket/mod.rs index 4faa3010f7..b4bb70c6e5 100644 --- a/src/sys/socket/mod.rs +++ b/src/sys/socket/mod.rs @@ -633,10 +633,20 @@ pub struct Ipv6MembershipRequest(libc::ipv6_mreq); impl Ipv6MembershipRequest { /// Instantiate a new `Ipv6MembershipRequest` - pub const fn new(group: net::Ipv6Addr) -> Self { + /// If the interface argument is None, the interface index will be + /// specified as 0. + pub const fn new(group: net::Ipv6Addr, interface: Option) -> Self { Ipv6MembershipRequest(libc::ipv6_mreq { ipv6mr_multiaddr: ipv6addr_to_libc(&group), - ipv6mr_interface: 0, + ipv6mr_interface: + match interface { + None => 0, + Some(n) => { + #[cfg(target_os = "android")] + let n = n as libc::c_int; + n + } + } }) } }