OpenVPN
|
Go to the source code of this file.
Data Structures | |
struct | openvpn_ethhdr |
struct | openvpn_8021qhdr |
struct | openvpn_iphdr |
struct | openvpn_ipv6hdr |
struct | openvpn_icmp6hdr |
struct | openvpn_udphdr |
struct | openvpn_tcphdr |
struct | ip_tcp_udp_hdr |
Macros | |
#define | DEV_TYPE_UNDEF 0 |
#define | DEV_TYPE_TUN 2 /* point-to-point IP tunnel */ |
#define | DEV_TYPE_TAP 3 /* ethernet (802.3) tunnel */ |
#define | TOP_UNDEF 0 |
#define | TOP_NET30 1 |
#define | TOP_P2P 2 |
#define | TOP_SUBNET 3 |
#define | OPENVPN_ETH_ALEN 6 /* ethernet address length */ |
#define | OPENVPN_ETH_P_IPV4 0x0800 /* IPv4 protocol */ |
#define | OPENVPN_ETH_P_IPV6 0x86DD /* IPv6 protocol */ |
#define | OPENVPN_ETH_P_ARP 0x0806 /* ARP protocol */ |
#define | OPENVPN_ETH_P_8021Q 0x8100 /* 802.1Q protocol */ |
#define | OPENVPN_8021Q_MASK_PCP htons(0xE000) /* mask PCP out of pcp_cfi_vid */ |
#define | OPENVPN_8021Q_MASK_CFI htons(0x1000) /* mask CFI out of pcp_cfi_vid */ |
#define | OPENVPN_8021Q_MASK_VID htons(0x0FFF) /* mask VID out of pcp_cfi_vid */ |
#define | SIZE_ETH_TO_8021Q_HDR |
#define | OPENVPN_IN6_ARE_ADDR_EQUAL(a, b) (memcmp(a, b, sizeof(struct in6_addr)) == 0) |
Version of IN6_ARE_ADDR_EQUAL that is guaranteed to work for unaligned access. | |
#define | OPENVPN_IPH_GET_VER(v) (((v) >> 4) & 0x0F) |
#define | OPENVPN_IPH_GET_LEN(v) (((v) & 0x0F) << 2) |
#define | OPENVPN_IP_OFFMASK 0x1fff |
#define | OPENVPN_IPPROTO_IGMP 2 /* IGMP protocol */ |
#define | OPENVPN_IPPROTO_TCP 6 /* TCP protocol */ |
#define | OPENVPN_IPPROTO_UDP 17 /* UDP protocol */ |
#define | OPENVPN_IPPROTO_ICMPV6 58 /* ICMPV6 protocol */ |
#define | OPENVPN_ICMP6_DESTINATION_UNREACHABLE 1 |
#define | OPENVPN_ND_ROUTER_SOLICIT 133 |
#define | OPENVPN_ND_ROUTER_ADVERT 134 |
#define | OPENVPN_ND_NEIGHBOR_SOLICIT 135 |
#define | OPENVPN_ND_NEIGHBOR_ADVERT 136 |
#define | OPENVPN_ND_INVERSE_SOLICIT 141 |
#define | OPENVPN_ND_INVERSE_ADVERT 142 |
#define | OPENVPN_ICMP6_DU_NOROUTE 0 |
#define | OPENVPN_ICMP6_DU_COMMUNICATION_PROHIBTED 1 |
#define | OPENVPN_TCPH_GET_DOFF(d) (((d) & 0xF0) >> 2) |
#define | OPENVPN_TCPH_FIN_MASK (1<<0) |
#define | OPENVPN_TCPH_SYN_MASK (1<<1) |
#define | OPENVPN_TCPH_RST_MASK (1<<2) |
#define | OPENVPN_TCPH_PSH_MASK (1<<3) |
#define | OPENVPN_TCPH_ACK_MASK (1<<4) |
#define | OPENVPN_TCPH_URG_MASK (1<<5) |
#define | OPENVPN_TCPH_ECE_MASK (1<<6) |
#define | OPENVPN_TCPH_CWR_MASK (1<<7) |
#define | OPENVPN_TCPOPT_EOL 0 |
#define | OPENVPN_TCPOPT_NOP 1 |
#define | OPENVPN_TCPOPT_MAXSEG 2 |
#define | OPENVPN_TCPOLEN_MAXSEG 4 |
#define | ADJUST_CHECKSUM(acc, cksum) |
#define | ADD_CHECKSUM_32(acc, u32) |
#define | SUB_CHECKSUM_32(acc, u32) |
#define | OPENVPN_8021Q_MIN_VID 1 |
#define | OPENVPN_8021Q_MAX_VID 4094 |
Functions | |
static int | get_tun_ip_ver (int tunnel_type, struct buffer *buf, int *ip_hdr_offset) |
bool | is_ipv4 (int tunnel_type, struct buffer *buf) |
bool | is_ipv6 (int tunnel_type, struct buffer *buf) |
uint16_t | ip_checksum (const sa_family_t af, const uint8_t *payload, const int len_payload, const uint8_t *src_addr, const uint8_t *dest_addr, const int proto) |
Calculates an IP or IPv6 checksum with a pseudo header as required by TCP, UDP and ICMPv6. | |
#define ADD_CHECKSUM_32 | ( | acc, | |
u32 | |||
) |
#define ADJUST_CHECKSUM | ( | acc, | |
cksum | |||
) |
#define OPENVPN_8021Q_MASK_CFI htons(0x1000) /* mask CFI out of pcp_cfi_vid */ |
#define OPENVPN_8021Q_MASK_PCP htons(0xE000) /* mask PCP out of pcp_cfi_vid */ |
#define OPENVPN_8021Q_MASK_VID htons(0x0FFF) /* mask VID out of pcp_cfi_vid */ |
#define OPENVPN_IN6_ARE_ADDR_EQUAL | ( | a, | |
b | |||
) | (memcmp(a, b, sizeof(struct in6_addr)) == 0) |
#define SIZE_ETH_TO_8021Q_HDR |
#define SUB_CHECKSUM_32 | ( | acc, | |
u32 | |||
) |
|
inlinestatic |
Definition at line 241 of file proto.h.
References BLEN, BPTR, DEV_TYPE_TAP, DEV_TYPE_TUN, openvpn_udphdr::len, likely, OPENVPN_ETH_P_IPV4, OPENVPN_ETH_P_IPV6, OPENVPN_IPH_GET_VER, and openvpn_ethhdr::proto.
Referenced by drop_if_recursive_routing().
uint16_t ip_checksum | ( | const sa_family_t | af, |
const uint8_t * | payload, | ||
const int | len_payload, | ||
const uint8_t * | src_addr, | ||
const uint8_t * | dest_addr, | ||
const int | proto | ||
) |
Calculates an IP or IPv6 checksum with a pseudo header as required by TCP, UDP and ICMPv6.
af | - Address family for which the checksum is calculated AF_INET or AF_INET6 |
payload | - the TCP, ICMPv6 or UDP packet |
len_payload | - length of payload |
src_addr | - Source address of the packet |
dest_addr | - Destination address of the packet |
proto | next - header or IP protocol of the packet |
Definition at line 123 of file proto.c.
Referenced by dhcp_extract_router_msg(), and ipv6_send_icmp_unreachable().
bool is_ipv4 | ( | int | tunnel_type, |
struct buffer * | buf | ||
) |
bool is_ipv6 | ( | int | tunnel_type, |
struct buffer * | buf | ||
) |
Definition at line 116 of file proto.c.
References is_ipv_X().
Referenced by ipv6_send_icmp_unreachable(), and process_ip_header().