?? failover.h
字號:
/* failover.h Definitions for address trees... *//* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 2000-2003 by Internet Software Consortium * * Permission to use, copy, modify, and distribute this software for any * purpose with or without fee is hereby granted, provided that the above * copyright notice and this permission notice appear in all copies. * * THE SOFTWARE IS PROVIDED "AS IS" AND ISC DISCLAIMS ALL WARRANTIES * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL ISC BE LIABLE FOR * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. * * Internet Systems Consortium, Inc. * 950 Charter Street * Redwood City, CA 94063 * <info@isc.org> * http://www.isc.org/ * * This software has been written for Internet Systems Consortium * by Ted Lemon in cooperation with Vixie Enterprises and Nominum, Inc. * To learn more about Internet Systems Consortium, see * ``http://www.isc.org/''. To learn more about Vixie Enterprises, * see ``http://www.vix.com''. To learn more about Nominum, Inc., see * ``http://www.nominum.com''. */#if defined (FAILOVER_PROTOCOL)struct failover_option_info { int code; const char *name; enum { FT_UINT8, FT_IPADDR, FT_UINT32, FT_BYTES, FT_TEXT_OR_BYTES, FT_DDNS, FT_DDNS1, FT_UINT16, FT_TEXT, FT_UNDEF, FT_DIGEST } type; int num_present; int offset; u_int32_t bit;};typedef struct { unsigned count; u_int8_t *data;} failover_option_t;#define FM_OFFSET(x) (long)(&(((failover_message_t *)0) -> x))/* Failover message options: */#define FTO_BINDING_STATUS 1#define FTB_BINDING_STATUS 0x00000002#define FTO_ASSIGNED_IP_ADDRESS 2#define FTB_ASSIGNED_IP_ADDRESS 0x00000004#define FTO_SERVER_ADDR 3#define FTB_SERVER_ADDR 0x00000008#define FTO_ADDRESSES_TRANSFERRED 4#define FTB_ADDRESSES_TRANSFERRED 0x00000010#define FTO_CLIENT_IDENTIFIER 5#define FTB_CLIENT_IDENTIFIER 0x00000020#define FTO_CHADDR 6#define FTB_CHADDR 0x00000040#define FTO_DDNS 7#define FTB_DDNS 0x00000080#define FTO_REJECT_REASON 8#define FTB_REJECT_REASON 0x00000100#define FTO_MESSAGE 9#define FTB_MESSAGE 0x00000200#define FTO_MCLT 10#define FTB_MCLT 0x00000400#define FTO_VENDOR_CLASS 11#define FTB_VENDOR_CLASS 0x00000800#define FTO_LEASE_EXPIRY 13#define FTB_LEASE_EXPIRY 0x00002000#define FTO_POTENTIAL_EXPIRY 14#define FTB_POTENTIAL_EXPIRY 0x00004000#define FTO_GRACE_EXPIRY 15#define FTB_GRACE_EXPIRY 0x00008000#define FTO_CLTT 16#define FTB_CLTT 0x00010000#define FTO_STOS 17#define FTB_STOS 0x00020000#define FTO_SERVER_STATE 18#define FTB_SERVER_STATE 0x00040000#define FTO_SERVER_FLAGS 19#define FTB_SERVER_FLAGS 0x00080000#define FTO_VENDOR_OPTIONS 20#define FTB_VENDOR_OPTIONS 0x00100000#define FTO_MAX_UNACKED 21#define FTB_MAX_UNACKED 0x00200000#define FTO_RECEIVE_TIMER 23#define FTB_RECEIVE_TIMER 0x00800000#define FTO_HBA 24#define FTB_HBA 0x01000000#define FTO_MESSAGE_DIGEST 25#define FTB_MESSAGE_DIGEST 0x02000000#define FTO_PROTOCOL_VERSION 26#define FTB_PROTOCOL_VERSION 0x04000000#define FTO_TLS_REQUEST 27#define FTB_TLS_REQUEST 0x08000000#define FTO_TLS_REPLY 28#define FTB_TLS_REPLY 0x10000000#define FTO_REQUEST_OPTIONS 29#define FTB_REQUEST_OPTIONS 0x20000000#define FTO_REPLY_OPTIONS 30#define FTB_REPLY_OPTIONS 0x40000000#define FTO_MAX FTO_REPLY_OPTIONS/* Failover protocol message types: */#define FTM_POOLREQ 1#define FTM_POOLRESP 2#define FTM_BNDUPD 3#define FTM_BNDACK 4#define FTM_CONNECT 5#define FTM_CONNECTACK 6#define FTM_UPDREQ 7#define FTM_UPDDONE 8#define FTM_UPDREQALL 9#define FTM_STATE 10#define FTM_CONTACT 11#define FTM_DISCONNECT 12/* Reject reasons: */#define FTR_ILLEGAL_IP_ADDR 1#define FTR_FATAL_CONFLICT 2#define FTR_MISSING_BINDINFO 3#define FTR_TIMEMISMATCH 4#define FTR_INVALID_MCLT 5#define FTR_MISC_REJECT 6#define FTR_DUP_CONNECTION 7#define FTR_INVALID_PARTNER 8#define FTR_TLS_UNSUPPORTED 9#define FTR_TLS_UNCONFIGURED 10#define FTR_TLS_REQUIRED 11#define FTR_DIGEST_UNSUPPORTED 12#define FTR_DIGEST_UNCONFIGURED 13#define FTR_VERSION_MISMATCH 14#define FTR_MISSING_BIND_INFO 15#define FTR_OUTDATED_BIND_INFO 16#define FTR_LESS_CRIT_BIND_INFO 17#define FTR_NO_TRAFFIC 18#define FTR_HBA_CONFLICT 19#define FTR_UNKNOWN 254#define DHCP_FAILOVER_MAX_MESSAGE_SIZE 2048/* Failover server flags. */#define FTF_STARTUP 1typedef struct failover_message { int refcnt; struct failover_message *next; u_int8_t type; u_int8_t binding_status; u_int8_t protocol_version; u_int8_t reject_reason; u_int8_t server_flags; u_int8_t server_state; u_int8_t tls_reply; u_int8_t tls_request; u_int32_t stos; u_int32_t time; u_int32_t xid; u_int32_t addresses_transferred; u_int32_t assigned_addr; u_int32_t client_ltt; u_int32_t expiry; u_int32_t grace_expiry; u_int32_t max_unacked; u_int32_t mclt; u_int32_t potential_expiry; u_int32_t receive_timer; u_int32_t server_addr; failover_option_t chaddr; failover_option_t client_identifier; failover_option_t hba; failover_option_t message; failover_option_t reply_options; failover_option_t request_options; ddns_fqdn_t ddns; failover_option_t vendor_class; failover_option_t vendor_options; int options_present;} failover_message_t;typedef struct { OMAPI_OBJECT_PREAMBLE; struct option_cache *peer_address; unsigned peer_port; int options_present; enum dhcp_flink_state { dhcp_flink_start, dhcp_flink_message_length_wait, dhcp_flink_message_wait, dhcp_flink_disconnected, dhcp_flink_state_max } state; failover_message_t *imsg; struct _dhcp_failover_state *state_object; u_int16_t imsg_len; unsigned imsg_count; u_int8_t imsg_payoff; /* Pay*load* offset. :') */ u_int32_t xid;} dhcp_failover_link_t;typedef struct _dhcp_failover_listener { OMAPI_OBJECT_PREAMBLE; struct _dhcp_failover_listener *next; omapi_addr_t address;} dhcp_failover_listener_t;#endif /* FAILOVER_PROTOCOL *//* A failover peer. */enum failover_state { unknown_state, partner_down, normal, communications_interrupted, resolution_interrupted, potential_conflict, recover, recover_done, shut_down, paused, startup, recover_wait};/* Service states are simplifications of failover states, particularly useful because the startup state isn't actually implementable as a seperate failover state without maintaining a state stack. */enum service_state { unknown_service_state, cooperating, not_cooperating, service_partner_down, not_responding, service_startup};#if defined (FAILOVER_PROTOCOL)typedef struct _dhcp_failover_config { struct option_cache *address; int port; u_int32_t max_flying_updates; enum failover_state state; TIME stos; u_int32_t max_response_delay;} dhcp_failover_config_t;typedef struct _dhcp_failover_state { OMAPI_OBJECT_PREAMBLE; struct _dhcp_failover_state *next; char *name; /* Name of this failover instance. */ dhcp_failover_config_t me; /* My configuration. */ dhcp_failover_config_t partner; /* Partner's configuration. */ enum failover_state saved_state; /* Saved state during startup. */ struct data_string server_identifier; /* Server identifier (IP addr) */ u_int32_t mclt; u_int8_t *hba; /* Hash bucket array for load balancing. */ int load_balance_max_secs; enum service_state service_state; const char *nrr; /* Printable reason why we're in the not_responding service state (empty string if we are responding. */ dhcp_failover_link_t *link_to_peer; /* Currently-established link to peer. */ enum { primary, secondary } i_am; /* We are primary or secondary in this relationship. */ TIME last_packet_sent; /* Timestamp on last packet we sent. */ TIME last_timestamp_received; /* The last timestamp we sent that has been returned by our partner. */ TIME skew; /* The skew between our clock and our partner's. */ struct lease *update_queue_head; /* List of leases we haven't sent to peer. */ struct lease *update_queue_tail; struct lease *ack_queue_head; /* List of lease updates the peer hasn't yet acked. */ struct lease *ack_queue_tail; struct lease *send_update_done; /* When we get a BNDACK for this lease, send an UPDDONE message. */ int cur_unacked_updates; /* Number of updates we've sent that have not yet been acked. */ /* List of messages which we haven't acked yet. */ failover_message_t *toack_queue_head; failover_message_t *toack_queue_tail; int pending_acks; /* Number of messages in the toack queue. */ int pool_count; /* Number of pools referencing this failover state object. */} dhcp_failover_state_t;#define DHCP_FAILOVER_VERSION 1#endif /* FAILOVER_PROTOCOL */
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -