mirror of
https://github.com/cloud-hypervisor/cloud-hypervisor.git
synced 2026-08-05 02:19:16 +00:00
Allow tap interfaces to be configured with an IPv6 address. The change is fairly straightforward: we need to update the API types and CLI parsing to accept either an IPv6 or IPv4 and then match on the IP address type when the tap device is configured. For IPv6 addresses, the netmask (prefix) must be provided at the same time as the address itself (in the SIOCSIFADDR ioctl). They cannot be configured separately. So we remove the separate "set_netmask" function and convert "set_ip_addr" to also accept a netmask. For IPv4 addresses, the IP address and netmask were already always set together, so this should have no functional impact for users of IPv4 addresses. Signed-off-by: Gregory Anders <ganders@cloudflare.com>
42 lines
1.1 KiB
Rust
42 lines
1.1 KiB
Rust
// Copyright © 2025 Cloud Hypervisor Authors
|
|
//
|
|
// SPDX-License-Identifier: Apache-2.0
|
|
|
|
// bindgen /usr/include/linux/ipv6.h --no-layout-tests --constified-enum '*' --allowlist-type 'sockaddr_in6|in6_ifreq'
|
|
|
|
/* automatically generated by rust-bindgen 0.71.1 */
|
|
|
|
pub type __u8 = ::std::os::raw::c_uchar;
|
|
pub type __u16 = ::std::os::raw::c_ushort;
|
|
pub type __u32 = ::std::os::raw::c_uint;
|
|
pub type __be16 = __u16;
|
|
pub type __be32 = __u32;
|
|
#[repr(C)]
|
|
#[derive(Copy, Clone)]
|
|
pub struct in6_addr {
|
|
pub in6_u: in6_addr__bindgen_ty_1,
|
|
}
|
|
#[repr(C)]
|
|
#[derive(Copy, Clone)]
|
|
pub union in6_addr__bindgen_ty_1 {
|
|
pub u6_addr8: [__u8; 16usize],
|
|
pub u6_addr16: [__be16; 8usize],
|
|
pub u6_addr32: [__be32; 4usize],
|
|
}
|
|
#[repr(C)]
|
|
#[derive(Copy, Clone)]
|
|
pub struct sockaddr_in6 {
|
|
pub sin6_family: ::std::os::raw::c_ushort,
|
|
pub sin6_port: __be16,
|
|
pub sin6_flowinfo: __be32,
|
|
pub sin6_addr: in6_addr,
|
|
pub sin6_scope_id: __u32,
|
|
}
|
|
#[repr(C)]
|
|
#[derive(Copy, Clone)]
|
|
pub struct in6_ifreq {
|
|
pub ifr6_addr: in6_addr,
|
|
pub ifr6_prefixlen: __u32,
|
|
pub ifr6_ifindex: ::std::os::raw::c_int,
|
|
}
|