whack.h
来自「This a good VPN source」· C头文件 代码 · 共 251 行
H
251 行
/* Structure of messages from whack to Pluto proper. * Copyright (C) 1998-2001 D. Hugh Redelmeier. * * This program is free software; you can redistribute it and/or modify it * under the terms of the GNU General Public License as published by the * Free Software Foundation; either version 2 of the License, or (at your * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. * * 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. * * RCSID $Id: whack.h,v 1.68 2004/12/16 01:22:44 mcr Exp $ */#include <openswan.h>#include <openswan/ipsec_policy.h>/* Since the message remains on one host, native representation is used. * Think of this as horizontal microcode: all selected operations are * to be done (in the order declared here). * * MAGIC is used to help detect version mismatches between whack and Pluto. * Whenever the interface (i.e. this struct) changes in form or * meaning, change this value (probably by changing the last number). * * If the command only requires basic actions (status or shutdown), * it is likely that the relevant part of the message changes less frequently. * Whack uses WHACK_BASIC_MAGIC in those cases. * * NOTE: no value of WHACK_BASIC_MAGIC may equal any value of WHACK_MAGIC. * Otherwise certain version mismatches will not be detected. */#define WHACK_BASIC_MAGIC (((((('w' << 8) + 'h') << 8) + 'k') << 8) + 24)#define WHACK_MAGIC (((((('o' << 8) + 'h') << 8) + 'k') << 8) + 32)/* struct whack_end is a lot like connection.h's struct end * It differs because it is going to be shipped down a socket * and because whack is a separate program from pluto. */struct whack_end { char *id; /* id string (if any) -- decoded by pluto */ char *cert; /* path string (if any) -- loaded by pluto */ char *ca; /* distinguished name string (if any) -- parsed by pluto */ char *groups; /* access control groups (if any) -- parsed by pluto */ ip_address host_addr, host_nexthop, host_srcip; ip_subnet client; bool key_from_DNS_on_demand; bool has_client; bool has_client_wildcard; bool has_port_wildcard; char *updown; /* string */ u_int16_t host_port; /* host order */ u_int16_t port; /* host order */ u_int8_t protocol;#ifdef VIRTUAL_IP char *virt;#endif bool xauth_server; /* for XAUTH */ bool xauth_client; bool modecfg_server; /* for MODECFG */ bool modecfg_client; enum certpolicy sendcert; enum ipsec_cert_type certtype;};struct whack_message { unsigned int magic; /* for WHACK_STATUS: */ bool whack_status; /* for WHACK_SHUTDOWN */ bool whack_shutdown; /* END OF BASIC COMMANDS * If you change anything earlier in this struct, update WHACK_BASIC_MAGIC. */ /* name is used in connection and initiate */ size_t name_len; /* string 1 */ char *name; /* for WHACK_OPTIONS: */ bool whack_options; lset_t debugging; /* only used #ifdef DEBUG, but don't want layout to change */ /* for WHACK_CONNECTION */ bool whack_connection; bool whack_async; lset_t policy; time_t sa_ike_life_seconds; time_t sa_ipsec_life_seconds; time_t sa_rekey_margin; unsigned long sa_rekey_fuzz; unsigned long sa_keying_tries; /* For DPD 3706 - Dead Peer Detection */ time_t dpd_delay; time_t dpd_timeout; int dpd_action; int dpd_count; /* Force the use of NAT-T on a connection */ bool forceencaps; /* note that each end contains string 2/5.id, string 3/6 cert, * and string 4/7 updown */ struct whack_end left; struct whack_end right; /* note: if the client is the gateway, the following must be equal */ sa_family_t addr_family; /* between gateways */ sa_family_t tunnel_addr_family; /* between clients */ char *ike; /* ike algo string (separated by commas) */ char *pfsgroup; /* pfsgroup will be "encapsulated" in esp string for pluto */ char *esp; /* esp algo string (separated by commas) */ /* for WHACK_KEY: */ bool whack_key; bool whack_addkey; char *keyid; /* string 8 */ enum pubkey_alg pubkey_alg; chunk_t keyval; /* chunk */ /* for WHACK_MYID: */ bool whack_myid; char *myid; /* string 7 */ /* for WHACK_ROUTE: */ bool whack_route; /* for WHACK_UNROUTE: */ bool whack_unroute; /* for WHACK_INITIATE: */ bool whack_initiate; /* for WHACK_OPINITIATE */ bool whack_oppo_initiate; ip_address oppo_my_client, oppo_peer_client; /* for WHACK_TERMINATE: */ bool whack_terminate; /* for WHACK_DELETE: */ bool whack_delete; /* for WHACK_DELETESTATE: */ bool whack_deletestate; so_serial_t whack_deletestateno; /* for WHACK_LISTEN: */ bool whack_listen, whack_unlisten; /* for WHACK_CRASH - note if a remote peer is known to have rebooted */ bool whack_crash; ip_address whack_crash_peer; /* for WHACK_LIST */ bool whack_utc; lset_t whack_list; /* for WHACK_PURGEOCSP */ bool whack_purgeocsp; /* for WHACK_REREAD */ u_char whack_reread; /* space for strings (hope there is enough room): * Note that pointers don't travel on wire. * 1 connection name [name_len] * 2 left's name [left.host.name.len] * 3 left's cert * 4 left's ca * 5 left's groups * 6 left's updown * 7 right's name [left.host.name.len] * 8 right's cert * 9 right's ca * 10 right's groups * 11 right's updown * 12 keyid * 13 myid * plus keyval (limit: 8K bits + overhead), a chunk. */ size_t str_size; char string[2048];};/* options of whack --list*** command */#define LIST_NONE 0x0000 /* don't list anything */#define LIST_PUBKEYS 0x0001 /* list all public keys */#define LIST_CERTS 0x0002 /* list all host/user certs */#define LIST_CACERTS 0x0004 /* list all ca certs */#define LIST_ACERTS 0x0008 /* list all attribute certs */#define LIST_AACERTS 0x0010 /* list all aa certs */#define LIST_OCSPCERTS 0x0020 /* list all ocsp certs */#define LIST_GROUPS 0x0040 /* list all access control groups */#define LIST_CRLS 0x0080 /* list all crls */#define LIST_OCSP 0x0100 /* list all ocsp cache entries */#define LIST_CARDS 0x0200 /* list all smartcard records */#define LIST_EVENTS 0x0400 /* list all queued events *//* omit events from listing options */#define LIST_ALL LRANGES(LIST_PUBKEYS, LIST_CARDS) /* all list options *//* options of whack --reread*** command */#define REREAD_NONE 0x00 /* don't reread anything */#define REREAD_SECRETS 0x01 /* reread /etc/ipsec.secrets */#define REREAD_CACERTS 0x02 /* reread certs in /etc/ipsec.d/cacerts */#define REREAD_AACERTS 0x04 /* reread certs in /etc/ipsec.d/aacerts */#define REREAD_OCSPCERTS 0x08 /* reread certs in /etc/ipsec.d/ocspcerts */#define REREAD_ACERTS 0x10 /* reread certs in /etc/ipsec.d/acerts */#define REREAD_CRLS 0x20 /* reread crls in /etc/ipsec.d/crls */#define REREAD_ALL LRANGES(REREAD_SECRETS, REREAD_CRLS) /* all reread options */struct whackpacker { struct whack_message *msg; char *str_roof; char *str_next; int n;};extern err_t pack_whack_msg(struct whackpacker *wp);extern err_t unpack_whack_msg (struct whackpacker *wp);extern void clear_end(struct whack_end *e);/* * Local Variables: * c-basic-offset:4 * c-style: pluto * End: */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?