OpenVPN
mroute.h File Reference
#include "buffer.h"
#include "list.h"
#include "route.h"
#include <stddef.h>
Include dependency graph for mroute.h:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Data Structures

struct  mroute_addr
struct  mroute_helper

Macros

#define IP_MCAST_SUBNET_MASK   ((in_addr_t)240 << 24)
#define IP_MCAST_NETWORK   ((in_addr_t)224 << 24)
#define MROUTE_EXTRACT_SUCCEEDED   (1 << 0)
#define MROUTE_EXTRACT_BCAST   (1 << 1)
#define MROUTE_EXTRACT_MCAST   (1 << 2)
#define MROUTE_EXTRACT_IGMP   (1 << 3)
#define MROUTE_SEC_EXTRACT_SUCCEEDED   (1 << (0 + MROUTE_SEC_SHIFT))
#define MROUTE_SEC_EXTRACT_BCAST   (1 << (1 + MROUTE_SEC_SHIFT))
#define MROUTE_SEC_EXTRACT_MCAST   (1 << (2 + MROUTE_SEC_SHIFT))
#define MROUTE_SEC_EXTRACT_IGMP   (1 << (3 + MROUTE_SEC_SHIFT))
#define MROUTE_SEC_SHIFT   4
#define MR_MAX_ADDR_LEN   20
#define MR_ADDR_NONE   0
#define MR_ADDR_ETHER   1
#define MR_ADDR_IPV4   2
#define MR_ADDR_IPV6   3
#define MR_ADDR_MASK   3
#define MR_WITH_PORT   4
#define MR_WITH_NETBITS   8
#define MR_ARP   16
#define MR_WITH_PROTO   32
#define MR_ONLINK_DCO_ADDR   64
#define MR_HELPER_NET_LEN   129
#define MAPF_SUBNET   (1 << 0)
#define MAPF_IA_EMPTY_IF_UNDEF   (1 << 1)
#define MAPF_SHOW_ARP   (1 << 2)
#define MAPF_SHOW_FAMILY   (1 << 3)

Functions

bool mroute_extract_openvpn_sockaddr (struct mroute_addr *addr, const struct openvpn_sockaddr *osaddr, bool use_port)
bool mroute_learnable_address (const struct mroute_addr *addr, struct gc_arena *gc)
uint64_t mroute_addr_hash_function (const void *key, const uint8_t hash_key[HASH_KEY_LEN])
bool mroute_addr_compare_function (const void *key1, const void *key2)
void mroute_addr_init (struct mroute_addr *addr)
const char * mroute_addr_print (const struct mroute_addr *ma, struct gc_arena *gc)
const char * mroute_addr_print_ex (const struct mroute_addr *ma, const unsigned int flags, struct gc_arena *gc)
void mroute_addr_mask_host_bits (struct mroute_addr *ma)
struct mroute_helper * mroute_helper_init (int ageable_ttl_secs)
void mroute_helper_free (struct mroute_helper *mh)
void mroute_helper_add_iroute46 (struct mroute_helper *mh, int netbits)
void mroute_helper_del_iroute46 (struct mroute_helper *mh, int netbits)
unsigned int mroute_extract_addr_ip (struct mroute_addr *src, struct mroute_addr *dest, const struct buffer *buf)
unsigned int mroute_extract_addr_ether (struct mroute_addr *src, struct mroute_addr *dest, uint16_t vid, const struct buffer *buf)
static unsigned int mroute_extract_addr_from_packet (struct mroute_addr *src, struct mroute_addr *dest, uint16_t vid, const struct buffer *buf, int tunnel_type)
static bool mroute_addr_equal (const struct mroute_addr *a1, const struct mroute_addr *a2)
static const uint8_t * mroute_addr_hash_ptr (const struct mroute_addr *a)
static uint32_t mroute_addr_hash_len (const struct mroute_addr *a)
static void mroute_extract_in_addr_t (struct mroute_addr *dest, const in_addr_t src)

Macro Definition Documentation

◆ IP_MCAST_NETWORK

#define IP_MCAST_NETWORK   ((in_addr_t)224 << 24)

Definition at line 34 of file mroute.h.

Referenced by mroute_is_mcast().

◆ IP_MCAST_SUBNET_MASK

#define IP_MCAST_SUBNET_MASK   ((in_addr_t)240 << 24)

Definition at line 33 of file mroute.h.

Referenced by mroute_is_mcast().

◆ MAPF_IA_EMPTY_IF_UNDEF

#define MAPF_IA_EMPTY_IF_UNDEF   (1 << 1)

Definition at line 156 of file mroute.h.

Referenced by mroute_addr_print(), and mroute_addr_print_ex().

◆ MAPF_SHOW_ARP

#define MAPF_SHOW_ARP   (1 << 2)

Definition at line 157 of file mroute.h.

Referenced by mroute_addr_print_ex().

◆ MAPF_SHOW_FAMILY

#define MAPF_SHOW_FAMILY   (1 << 3)

Definition at line 158 of file mroute.h.

Referenced by mroute_addr_print_ex(), and multi_process_float().

◆ MAPF_SUBNET

#define MAPF_SUBNET   (1 << 0)

Definition at line 155 of file mroute.h.

Referenced by management_learn_addr(), and mroute_addr_print_ex().

◆ MR_ADDR_ETHER

#define MR_ADDR_ETHER   1

Definition at line 61 of file mroute.h.

Referenced by is_mac_mcast_maddr(), mroute_addr_print_ex(), and mroute_copy_ether_to_addr().

◆ MR_ADDR_IPV4

◆ MR_ADDR_IPV6

◆ MR_ADDR_MASK

#define MR_ADDR_MASK   3

◆ MR_ADDR_NONE

#define MR_ADDR_NONE   0

Definition at line 60 of file mroute.h.

◆ MR_ARP

#define MR_ARP   16

Definition at line 73 of file mroute.h.

Referenced by mroute_addr_print_ex().

◆ MR_HELPER_NET_LEN

#define MR_HELPER_NET_LEN   129

◆ MR_MAX_ADDR_LEN

#define MR_MAX_ADDR_LEN   20

Definition at line 55 of file mroute.h.

◆ MR_ONLINK_DCO_ADDR

#define MR_ONLINK_DCO_ADDR   64

Definition at line 79 of file mroute.h.

Referenced by multi_learn_in6_addr(), and multi_learn_in_addr_t().

◆ MR_WITH_NETBITS

◆ MR_WITH_PORT

#define MR_WITH_PORT   4

Definition at line 67 of file mroute.h.

Referenced by mroute_addr_print_ex(), and mroute_extract_openvpn_sockaddr().

◆ MR_WITH_PROTO

#define MR_WITH_PROTO   32

◆ MROUTE_EXTRACT_BCAST

#define MROUTE_EXTRACT_BCAST   (1 << 1)

◆ MROUTE_EXTRACT_IGMP

#define MROUTE_EXTRACT_IGMP   (1 << 3)

Definition at line 41 of file mroute.h.

Referenced by mroute_extract_addr_ip().

◆ MROUTE_EXTRACT_MCAST

#define MROUTE_EXTRACT_MCAST   (1 << 2)

◆ MROUTE_EXTRACT_SUCCEEDED

#define MROUTE_EXTRACT_SUCCEEDED   (1 << 0)

◆ MROUTE_SEC_EXTRACT_BCAST

#define MROUTE_SEC_EXTRACT_BCAST   (1 << (1 + MROUTE_SEC_SHIFT))

Definition at line 44 of file mroute.h.

◆ MROUTE_SEC_EXTRACT_IGMP

#define MROUTE_SEC_EXTRACT_IGMP   (1 << (3 + MROUTE_SEC_SHIFT))

Definition at line 46 of file mroute.h.

◆ MROUTE_SEC_EXTRACT_MCAST

#define MROUTE_SEC_EXTRACT_MCAST   (1 << (2 + MROUTE_SEC_SHIFT))

Definition at line 45 of file mroute.h.

◆ MROUTE_SEC_EXTRACT_SUCCEEDED

#define MROUTE_SEC_EXTRACT_SUCCEEDED   (1 << (0 + MROUTE_SEC_SHIFT))

Definition at line 43 of file mroute.h.

◆ MROUTE_SEC_SHIFT

#define MROUTE_SEC_SHIFT   4

Definition at line 48 of file mroute.h.

Function Documentation

◆ mroute_addr_compare_function()

bool mroute_addr_compare_function ( const void * key1,
const void * key2 )

Definition at line 366 of file mroute.c.

References mroute_addr_equal().

Referenced by multi_init().

◆ mroute_addr_equal()

bool mroute_addr_equal ( const struct mroute_addr * a1,
const struct mroute_addr * a2 )
inlinestatic

◆ mroute_addr_hash_function()

uint64_t mroute_addr_hash_function ( const void * key,
const uint8_t hash_key[HASH_KEY_LEN] )

Definition at line 359 of file mroute.c.

References HASH_KEY_LEN, mroute_addr_hash_len(), mroute_addr_hash_ptr(), and siphash_hash_func().

Referenced by multi_init().

◆ mroute_addr_hash_len()

uint32_t mroute_addr_hash_len ( const struct mroute_addr * a)
inlinestatic

Definition at line 238 of file mroute.h.

References mroute_addr::len.

Referenced by mroute_addr_hash_function().

◆ mroute_addr_hash_ptr()

const uint8_t * mroute_addr_hash_ptr ( const struct mroute_addr * a)
inlinestatic

Definition at line 231 of file mroute.h.

References mroute_addr::proto.

Referenced by mroute_addr_hash_function().

◆ mroute_addr_init()

void mroute_addr_init ( struct mroute_addr * addr)

Definition at line 39 of file mroute.c.

References CLEAR.

Referenced by multi_create_instance().

◆ mroute_addr_mask_host_bits()

◆ mroute_addr_print()

◆ mroute_addr_print_ex()

◆ mroute_extract_addr_ether()

unsigned int mroute_extract_addr_ether ( struct mroute_addr * src,
struct mroute_addr * dest,
uint16_t vid,
const struct buffer * buf )

◆ mroute_extract_addr_from_packet()

unsigned int mroute_extract_addr_from_packet ( struct mroute_addr * src,
struct mroute_addr * dest,
uint16_t vid,
const struct buffer * buf,
int tunnel_type )
inlinestatic

◆ mroute_extract_addr_ip()

◆ mroute_extract_in_addr_t()

void mroute_extract_in_addr_t ( struct mroute_addr * dest,
const in_addr_t src )
inlinestatic

◆ mroute_extract_openvpn_sockaddr()

◆ mroute_helper_add_iroute46()

void mroute_helper_add_iroute46 ( struct mroute_helper * mh,
int netbits )

◆ mroute_helper_del_iroute46()

void mroute_helper_del_iroute46 ( struct mroute_helper * mh,
int netbits )

◆ mroute_helper_free()

void mroute_helper_free ( struct mroute_helper * mh)

Definition at line 552 of file mroute.c.

Referenced by multi_uninit().

◆ mroute_helper_init()

struct mroute_helper * mroute_helper_init ( int ageable_ttl_secs)

Definition at line 483 of file mroute.c.

References mroute_helper::ageable_ttl_secs, and ALLOC_OBJ_CLEAR.

Referenced by multi_init().

◆ mroute_learnable_address()

bool mroute_learnable_address ( const struct mroute_addr * addr,
struct gc_arena * gc )