📄 stables.c
字号:
/* stables.c Tables of information only used by server... *//* * Copyright (c) 2004 by Internet Systems Consortium, Inc. ("ISC") * Copyright (c) 1995-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''. */#ifndef lintstatic char copyright[] ="$Id: stables.c,v 1.25.2.12 2004/06/10 17:59:58 dhankins Exp $ Copyright (c) 2004 Internet Systems Consortium. All rights reserved.\n";#endif /* not lint */#include "dhcpd.h"#if defined (FAILOVER_PROTOCOL)/* This is used to indicate some kind of failure when generating a failover option. */failover_option_t null_failover_option = { 0, 0 };failover_option_t skip_failover_option = { 0, 0 };/* Information about failover options, for printing, encoding and decoding. */struct failover_option_info ft_options [] ={ { 0, "unused", FT_UNDEF, 0, 0, 0 }, { FTO_BINDING_STATUS, "binding-status", FT_UINT8, 1, FM_OFFSET (binding_status), FTB_BINDING_STATUS }, { FTO_ASSIGNED_IP_ADDRESS, "assigned-IP-address", FT_IPADDR, 1, FM_OFFSET (assigned_addr), FTB_ASSIGNED_IP_ADDRESS }, { FTO_SERVER_ADDR, "sending-server-IP-address", FT_IPADDR, 1, FM_OFFSET (server_addr), FTB_SERVER_ADDR }, { FTO_ADDRESSES_TRANSFERRED, "addresses-transferred", FT_UINT32, 1, FM_OFFSET (addresses_transferred), FTB_ADDRESSES_TRANSFERRED }, { FTO_CLIENT_IDENTIFIER, "client-identifier", FT_BYTES, 0, FM_OFFSET (client_identifier), FTB_CLIENT_IDENTIFIER }, { FTO_CHADDR, "client-hardware-address", FT_BYTES, 0, FM_OFFSET (chaddr), FTB_CHADDR }, { FTO_DDNS, "DDNS", FT_DDNS, 1, FM_OFFSET (ddns), FTB_DDNS }, { FTO_REJECT_REASON, "reject-reason", FT_UINT8, 1, FM_OFFSET (reject_reason), FTB_REJECT_REASON }, { FTO_MESSAGE, "message", FT_TEXT, 0, FM_OFFSET (message), FTB_MESSAGE }, { FTO_MCLT, "MCLT", FT_UINT32, 1, FM_OFFSET (mclt), FTB_MCLT }, { FTO_VENDOR_CLASS, "vendor-class-identifier", FT_TEXT_OR_BYTES, 0, FM_OFFSET (vendor_class), FTB_VENDOR_CLASS }, { 12, "undefined", FT_UNDEF, 0, 0, 0 }, { FTO_LEASE_EXPIRY, "lease-expiration-time", FT_UINT32, 1, FM_OFFSET (expiry), FTB_LEASE_EXPIRY }, { FTO_POTENTIAL_EXPIRY, "potential-expiration-time", FT_UINT32, 1, FM_OFFSET (potential_expiry), FTB_POTENTIAL_EXPIRY }, { FTO_GRACE_EXPIRY, "grace-expiration-time", FT_UINT32, 1, FM_OFFSET (grace_expiry), FTB_GRACE_EXPIRY }, { FTO_CLTT, "client-last-transaction-time", FT_UINT32, 1, FM_OFFSET (client_ltt), FTB_CLTT }, { FTO_STOS, "start-time-of-state", FT_UINT32, 1, FM_OFFSET (stos), FTB_STOS }, { FTO_SERVER_STATE, "server-state", FT_UINT8, 1, FM_OFFSET (server_state), FTB_SERVER_STATE }, { FTO_SERVER_FLAGS, "server-flags", FT_UINT8, 1, FM_OFFSET (server_flags), FTB_SERVER_FLAGS }, { FTO_VENDOR_OPTIONS, "vendor-specific-options", FT_BYTES, 0, FM_OFFSET (vendor_options), FTB_VENDOR_OPTIONS }, { FTO_MAX_UNACKED, "max-unacked-bndupd", FT_UINT32, 1, FM_OFFSET (max_unacked), FTB_MAX_UNACKED }, { 22, "undefined", FT_UNDEF, 0, 0 }, { FTO_RECEIVE_TIMER, "receive-timer", FT_UINT32, 1, FM_OFFSET (receive_timer), FTB_RECEIVE_TIMER }, { FTO_HBA, "hash-bucket-assignment", FT_BYTES, 0, FM_OFFSET (hba), FTB_HBA }, { FTO_MESSAGE_DIGEST, "message-digest", FT_DIGEST, 0, 0, FTB_MESSAGE_DIGEST }, { FTO_PROTOCOL_VERSION, "protocol-version", FT_UINT8, 1, FM_OFFSET (protocol_version), FTB_PROTOCOL_VERSION }, { FTO_TLS_REQUEST, "TLS-request", FT_UINT8, 2, FM_OFFSET (tls_request), FTB_TLS_REQUEST }, { FTO_TLS_REPLY, "TLS-reply", FT_BYTES, 1, FM_OFFSET (tls_reply ), FTB_TLS_REPLY }, { FTO_REQUEST_OPTIONS, "client-request-options", FT_BYTES, 0, FM_OFFSET (request_options), FTB_REQUEST_OPTIONS }, { FTO_REPLY_OPTIONS, "client-reply-options", FT_BYTES, 0, FM_OFFSET (reply_options), FTB_REPLY_OPTIONS }};/* These are really options that make sense for a particular request - if some other option comes in, we're not going to use it, so we can just discard it. Note that the message-digest option is allowed for all message types, but is not saved - it's just used to validate the message and then discarded - so it's not mentioned here. */u_int32_t fto_allowed [] = { 0, /* 0 unused */ 0, /* 1 POOLREQ */ FTB_ADDRESSES_TRANSFERRED, /* 2 POOLRESP */ (FTB_ASSIGNED_IP_ADDRESS | FTB_BINDING_STATUS | FTB_CLIENT_IDENTIFIER | FTB_CHADDR | FTB_LEASE_EXPIRY | FTB_POTENTIAL_EXPIRY | FTB_STOS | FTB_CLTT | FTB_REQUEST_OPTIONS | FTB_REPLY_OPTIONS), /* 3 BNDUPD */ (FTB_ASSIGNED_IP_ADDRESS | FTB_BINDING_STATUS | FTB_CLIENT_IDENTIFIER | FTB_CHADDR | FTB_LEASE_EXPIRY | FTB_POTENTIAL_EXPIRY | FTB_STOS | FTB_CLTT | FTB_REQUEST_OPTIONS | FTB_REPLY_OPTIONS | FTB_REJECT_REASON | FTB_MESSAGE), /* 4 BNDACK */ (FTB_SERVER_ADDR | FTB_MAX_UNACKED | FTB_RECEIVE_TIMER | FTB_VENDOR_CLASS | FTB_PROTOCOL_VERSION | FTB_TLS_REQUEST | FTB_MCLT | FTB_HBA), /* 5 CONNECT */ (FTB_SERVER_ADDR | FTB_MAX_UNACKED | FTB_RECEIVE_TIMER | FTB_VENDOR_CLASS | FTB_PROTOCOL_VERSION | FTB_TLS_REPLY | FTB_REJECT_REASON | FTB_MESSAGE), /* CONNECTACK */ 0, /* 7 UPDREQ */ 0, /* 8 UPDDONE */ 0, /* 9 UPDREQALL */ (FTB_SERVER_STATE | FTB_SERVER_FLAGS | FTB_STOS), /* 10 STATE */ 0, /* 11 CONTACT */ (FTB_REJECT_REASON | FTB_MESSAGE) /* 12 DISCONNECT */};/* Sizes of the various types. */int ft_sizes [] = { 1, /* FT_UINT8 */ 4, /* FT_IPADDR */ 4, /* FT_UINT32 */ 1, /* FT_BYTES */ 1, /* FT_TEXT_OR_BYTES */ 0, /* FT_DDNS */ 0, /* FT_DDNS1 */ 2, /* FT_UINT16 */ 1, /* FT_TEXT */ 0, /* FT_UNDEF */ 0, /* FT_DIGEST */};/* Names of the various failover link states. */const char *dhcp_flink_state_names [] = { "invalid state 0", "startup", "message length wait", "message wait", "disconnected"};#endif /* FAILOVER_PROTOCOL *//* Failover binding state names. These are used even if there is no failover protocol support. */const char *binding_state_names [] = { "free", "active", "expired", "released", "abandoned", "reset", "backup", "reserved", "bootp" };struct universe agent_universe;struct option agent_options [256] = { { "pad", "", &agent_universe, 0 }, { "circuit-id", "X", &agent_universe, 1 }, { "remote-id", "X", &agent_universe, 2 }, { "agent-id", "I", &agent_universe, 3 }, { "DOCSIS-device-class", "L", &agent_universe, 4 }, { "unknown-5", "X", &agent_universe, 5 }, { "unknown-6", "X", &agent_universe, 6 }, { "unknown-7", "X", &agent_universe, 7 }, { "unknown-8", "X", &agent_universe, 8 }, { "unknown-9", "X", &agent_universe, 9 }, { "unknown-10", "X", &agent_universe, 10 }, { "unknown-11", "X", &agent_universe, 11 }, { "unknown-12", "X", &agent_universe, 12 }, { "unknown-13", "X", &agent_universe, 13 }, { "unknown-14", "X", &agent_universe, 14 }, { "unknown-15", "X", &agent_universe, 15 }, { "unknown-16", "X", &agent_universe, 16 }, { "unknown-17", "X", &agent_universe, 17 }, { "unknown-18", "X", &agent_universe, 18 }, { "unknown-19", "X", &agent_universe, 19 }, { "unknown-20", "X", &agent_universe, 20 }, { "unknown-21", "X", &agent_universe, 21 }, { "unknown-22", "X", &agent_universe, 22 }, { "unknown-23", "X", &agent_universe, 23 }, { "unknown-24", "X", &agent_universe, 24 }, { "unknown-25", "X", &agent_universe, 25 }, { "unknown-26", "X", &agent_universe, 26 }, { "unknown-27", "X", &agent_universe, 27 }, { "unknown-28", "X", &agent_universe, 28 }, { "unknown-29", "X", &agent_universe, 29 }, { "unknown-30", "X", &agent_universe, 30 }, { "unknown-31", "X", &agent_universe, 31 }, { "unknown-32", "X", &agent_universe, 32 }, { "unknown-33", "X", &agent_universe, 33 }, { "unknown-34", "X", &agent_universe, 34 }, { "unknown-35", "X", &agent_universe, 35 }, { "unknown-36", "X", &agent_universe, 36 }, { "unknown-37", "X", &agent_universe, 37 }, { "unknown-38", "X", &agent_universe, 38 }, { "unknown-39", "X", &agent_universe, 39 }, { "unknown-40", "X", &agent_universe, 40 }, { "unknown-41", "X", &agent_universe, 41 }, { "unknown-42", "X", &agent_universe, 42 }, { "unknown-43", "X", &agent_universe, 43 }, { "unknown-44", "X", &agent_universe, 44 }, { "unknown-45", "X", &agent_universe, 45 }, { "unknown-46", "X", &agent_universe, 46 }, { "unknown-47", "X", &agent_universe, 47 }, { "unknown-48", "X", &agent_universe, 48 }, { "unknown-49", "X", &agent_universe, 49 }, { "unknown-50", "X", &agent_universe, 50 }, { "unknown-51", "X", &agent_universe, 51 }, { "unknown-52", "X", &agent_universe, 52 }, { "unknown-53", "X", &agent_universe, 53 }, { "unknown-54", "X", &agent_universe, 54 }, { "unknown-55", "X", &agent_universe, 55 }, { "unknown-56", "X", &agent_universe, 56 }, { "unknown-57", "X", &agent_universe, 57 }, { "unknown-58", "X", &agent_universe, 58 }, { "unknown-59", "X", &agent_universe, 59 }, { "unknown-60", "X", &agent_universe, 60 }, { "unknown-61", "X", &agent_universe, 61 }, { "unknown-62", "X", &agent_universe, 62 }, { "unknown-63", "X", &agent_universe, 63 }, { "unknown-64", "X", &agent_universe, 64 }, { "unknown-65", "X", &agent_universe, 65 }, { "unknown-66", "X", &agent_universe, 66 }, { "unknown-67", "X", &agent_universe, 67 }, { "unknown-68", "X", &agent_universe, 68 }, { "unknown-69", "X", &agent_universe, 69 }, { "unknown-70", "X", &agent_universe, 70 }, { "unknown-71", "X", &agent_universe, 71 }, { "unknown-72", "X", &agent_universe, 72 }, { "unknown-73", "X", &agent_universe, 73 }, { "unknown-74", "X", &agent_universe, 74 }, { "unknown-75", "X", &agent_universe, 75 }, { "unknown-76", "X", &agent_universe, 76 }, { "unknown-77", "X", &agent_universe, 77 }, { "unknown-78", "X", &agent_universe, 78 }, { "unknown-79", "X", &agent_universe, 79 }, { "unknown-80", "X", &agent_universe, 80 }, { "unknown-81", "X", &agent_universe, 81 }, { "unknown-82", "X", &agent_universe, 82 }, { "unknown-83", "X", &agent_universe, 83 }, { "unknown-84", "X", &agent_universe, 84 }, { "unknown-85", "X", &agent_universe, 85 }, { "unknown-86", "X", &agent_universe, 86 }, { "unknown-87", "X", &agent_universe, 87 }, { "unknown-88", "X", &agent_universe, 88 }, { "unknown-89", "X", &agent_universe, 89 }, { "unknown-90", "X", &agent_universe, 90 }, { "unknown-91", "X", &agent_universe, 91 }, { "unknown-92", "X", &agent_universe, 92 }, { "unknown-93", "X", &agent_universe, 93 }, { "unknown-94", "X", &agent_universe, 94 }, { "unknown-95", "X", &agent_universe, 95 }, { "unknown-96", "X", &agent_universe, 96 }, { "unknown-97", "X", &agent_universe, 97 }, { "unknown-98", "X", &agent_universe, 98 }, { "unknown-99", "X", &agent_universe, 99 }, { "unknown-100", "X", &agent_universe, 100 }, { "unknown-101", "X", &agent_universe, 101 }, { "unknown-102", "X", &agent_universe, 102 }, { "unknown-103", "X", &agent_universe, 103 }, { "unknown-104", "X", &agent_universe, 104 },
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -