Skip to main content

vmnet/port_forwarding/
mod.rs

1use num_enum::{IntoPrimitive, TryFromPrimitive};
2use std::net::IpAddr;
3
4/// Port forwarding rule.
5#[derive(Debug, Clone, Copy, PartialEq)]
6pub struct Rule {
7    pub address_family: AddressFamily,
8    pub protocol: Protocol,
9    pub external_port: u16,
10    pub addr: IpAddr,
11    pub internal_port: u16,
12}
13
14/// Address family related to a port forwarding rule.
15#[repr(u8)]
16#[derive(Debug, Clone, Copy, PartialEq, IntoPrimitive, TryFromPrimitive)]
17pub enum AddressFamily {
18    Ipv4 = libc::AF_INET as u8,
19    Ipv6 = libc::AF_INET6 as u8,
20}
21
22/// Protocol related to a port forwarding rule (e.g. TCP or UDP).
23#[repr(u8)]
24#[derive(Debug, Clone, Copy, PartialEq, IntoPrimitive, TryFromPrimitive)]
25pub enum Protocol {
26    Tcp = libc::IPPROTO_TCP as u8,
27    Udp = libc::IPPROTO_UDP as u8,
28}