| /* |
| * OpenVPN -- An application to securely tunnel IP networks |
| * over a single TCP/UDP port, with support for SSL/TLS-based |
| * session authentication and key exchange, |
| * packet encryption, packet authentication, and |
| * packet compression. |
| * |
| * Copyright (C) 2013-2018 Heiko Hund <heiko.hund@sophos.com> |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 |
| * as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope that it will be useful, |
| * but WITHOUT ANY WARRANTY; without even the implied warranty of |
| * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| * GNU General Public License for more details. |
| * |
| * You should have received a copy of the GNU General Public License along |
| * with this program; if not, write to the Free Software Foundation, Inc., |
| * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. |
| */ |
| |
| #ifndef OPENVPN_MSG_H_ |
| #define OPENVPN_MSG_H_ |
| |
| typedef enum { |
| msg_acknowledgement, |
| msg_add_address, |
| msg_del_address, |
| msg_add_route, |
| msg_del_route, |
| msg_add_dns_cfg, |
| msg_del_dns_cfg, |
| msg_add_nbt_cfg, |
| msg_del_nbt_cfg, |
| msg_flush_neighbors, |
| msg_add_block_dns, |
| msg_del_block_dns, |
| msg_register_dns, |
| msg_enable_dhcp, |
| } message_type_t; |
| |
| typedef struct { |
| message_type_t type; |
| size_t size; |
| int message_id; |
| } message_header_t; |
| |
| typedef union { |
| struct in_addr ipv4; |
| struct in6_addr ipv6; |
| } inet_address_t; |
| |
| typedef struct { |
| int index; |
| char name[256]; |
| } interface_t; |
| |
| typedef struct { |
| message_header_t header; |
| short family; |
| inet_address_t address; |
| int prefix_len; |
| interface_t iface; |
| } address_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| short family; |
| inet_address_t prefix; |
| int prefix_len; |
| inet_address_t gateway; |
| interface_t iface; |
| int metric; |
| } route_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| interface_t iface; |
| char domains[512]; |
| short family; |
| int addr_len; |
| inet_address_t addr[4]; /* support up to 4 dns addresses */ |
| } dns_cfg_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| interface_t iface; |
| int disable_nbt; |
| int nbt_type; |
| char scope_id[256]; |
| struct in_addr primary_nbns; |
| struct in_addr secondary_nbns; |
| } nbt_cfg_message_t; |
| |
| /* TODO: NTP */ |
| |
| typedef struct { |
| message_header_t header; |
| short family; |
| interface_t iface; |
| } flush_neighbors_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| int error_number; |
| } ack_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| interface_t iface; |
| } block_dns_message_t; |
| |
| typedef struct { |
| message_header_t header; |
| interface_t iface; |
| } enable_dhcp_message_t; |
| |
| #endif /* ifndef OPENVPN_MSG_H_ */ |