bootp: Add support for iSNS (RFC4174) dissection
Change-Id: I2d1807e631991d4115ca33d351e85c36272c209b Reviewed-on: https://code.wireshark.org/review/14523 Petri-Dish: Alexis La Goutte <alexis.lagoutte@gmail.com> Tested-by: Petri Dish Buildbot <buildbot-no-reply@wireshark.org> Reviewed-by: Michael Mann <mmann78@netscape.net>
This commit is contained in:
parent
7b3bfb80d8
commit
c480652da9
|
@ -43,6 +43,7 @@
|
|||
* RFC 3825: Dynamic Host Configuration Protocol Option for Coordinate-based Location Configuration Information
|
||||
* RFC 3925: Vendor-Identifying Vendor Options for Dynamic Host Configuration Protocol version 4 (DHCPv4)
|
||||
* RFC 3942: Reclassifying DHCPv4 Options
|
||||
* RFC 4174: The IPv4 Dynamic Host Configuration Protocol (DHCP) Option for the Internet Storage Name Service
|
||||
* RFC 4243: Vendor-Specific Information Suboption for the Dynamic Host Configuration Protocol (DHCP) Relay Agent Option
|
||||
* RFC 4361: Node-specific Client Identifiers for Dynamic Host Configuration Protocol Version Four (DHCPv4)
|
||||
* RFC 4388: Dynamic Host Configuration Protocol (DHCP) Leasequery
|
||||
|
@ -387,6 +388,42 @@ static int hf_bootp_option82_vrf_name_vpn_id_index = -1;
|
|||
/* 82:151 suboptions end */
|
||||
static int hf_bootp_option82_server_id_override_cisco = -1; /* 82:152 */
|
||||
|
||||
static int hf_bootp_option_isns_functions = -1;
|
||||
static int hf_bootp_option_isns_functions_enabled = -1;
|
||||
static int hf_bootp_option_isns_functions_dd_authorization = -1;
|
||||
static int hf_bootp_option_isns_functions_sec_policy_distibution = -1;
|
||||
static int hf_bootp_option_isns_functions_reserved = -1;
|
||||
|
||||
static int hf_bootp_option_isns_discovery_domain_access = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_enabled = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_control_node = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_iscsi_target = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_iscsi_inititator = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_ifcp_target_port = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_ifcp_initiator_port = -1;
|
||||
static int hf_bootp_option_isns_discovery_domain_access_reserved = -1;
|
||||
|
||||
static int hf_bootp_option_isns_administrative_flags = -1;
|
||||
static int hf_bootp_option_isns_administrative_flags_enabled = -1;
|
||||
static int hf_bootp_option_isns_administrative_flags_heartbeat = -1;
|
||||
static int hf_bootp_option_isns_administrative_flags_management_scns = -1;
|
||||
static int hf_bootp_option_isns_administrative_flags_default_dd = -1;
|
||||
static int hf_bootp_option_isns_administrative_flags_reserved = -1;
|
||||
|
||||
static int hf_bootp_option_isns_server_security_bitmap = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_enabled = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_ike_ipsec_enabled = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_main_mode = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_aggressive_mode = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_pfs = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_transport_mode = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_tunnel_mode = -1;
|
||||
static int hf_bootp_option_isns_server_security_bitmap_reserved = -1;
|
||||
|
||||
static int hf_bootp_option_isns_heartbeat_originator_addr = -1;
|
||||
static int hf_bootp_option_isns_primary_server_addr = -1;
|
||||
static int hf_bootp_option_isns_secondary_server_addr_list = -1;
|
||||
|
||||
static int hf_bootp_option_novell_dss_string = -1; /* 85 */
|
||||
static int hf_bootp_option_novell_dss_ip = -1; /* 85 */
|
||||
static int hf_bootp_option_novell_ds_tree_name = -1; /* 86 */
|
||||
|
@ -519,6 +556,11 @@ static gint ett_bootp_fqdn = -1;
|
|||
static gint ett_bootp_fqdn_flags = -1;
|
||||
static gint ett_bootp_filename_option = -1;
|
||||
static gint ett_bootp_server_hostname = -1;
|
||||
static gint ett_bootp_isns_functions = -1;
|
||||
static gint ett_bootp_isns_discovery_domain_access = -1;
|
||||
static gint ett_bootp_isns_administrative_flags = -1;
|
||||
static gint ett_bootp_isns_server_security_bitmap = -1;
|
||||
static gint ett_bootp_isns_secondary_server_addr = -1;
|
||||
|
||||
static expert_field ei_bootp_bad_length = EI_INIT;
|
||||
static expert_field ei_bootp_bad_bitfield = EI_INIT;
|
||||
|
@ -543,6 +585,7 @@ static expert_field ei_bootp_end_option_missing = EI_INIT;
|
|||
static expert_field ei_bootp_client_address_not_given = EI_INIT;
|
||||
static expert_field ei_bootp_server_name_overloaded_by_dhcp = EI_INIT;
|
||||
static expert_field ei_bootp_boot_filename_overloaded_by_dhcp = EI_INIT;
|
||||
static expert_field ei_bootp_option_isns_ignored_bitfield = EI_INIT;
|
||||
|
||||
static dissector_handle_t bootp_handle;
|
||||
|
||||
|
@ -776,6 +819,38 @@ static const enum_val_t bootp_uuid_endian_vals[] = {
|
|||
#define F_FQDN_N 0x08
|
||||
#define F_FQDN_MBZ 0xf0
|
||||
|
||||
#define ISNS_BITFIELD_NZ_MUST_BE_IGNORED(mask, ena_flag) \
|
||||
((mask) && !((mask) & (ena_flag)))
|
||||
|
||||
/* iSNS bit fields */
|
||||
#define F_ISNS_FUNCTIONS_ENABLED 0x0001
|
||||
#define F_ISNS_FUNCTIONS_DD_AUTH 0x0002
|
||||
#define F_ISNS_FUNCTIONS_SEC_POLICY 0x0004
|
||||
#define F_ISNS_FUNCTIONS_RESERVED 0xFFF8
|
||||
|
||||
#define F_ISNS_DD_ACCESS_ENABLED 0x0001
|
||||
#define F_ISNS_DD_ACCESS_CTRL_NODE 0x0002
|
||||
#define F_ISNS_DD_ACCESS_ISCSI_TARGET 0x0004
|
||||
#define F_ISNS_DD_ACCESS_ISCSI_INITIATOR 0x0008
|
||||
#define F_ISNS_DD_ACCESS_IFCP_TARGET_PORT 0x0010
|
||||
#define F_ISNS_DD_ACCESS_IFCP_INITIATOR_PORT 0x0020
|
||||
#define F_ISNS_DD_ACCESS_RESERVED 0xFFC0
|
||||
|
||||
#define F_ISNS_ADMIN_FLAGS_ENABLED 0x0001
|
||||
#define F_ISNS_ADMIN_FLAGS_HEARTBEAT 0x0002
|
||||
#define F_ISNS_ADMIN_FLAGS_MANAGEMENT_SCNS 0x0004
|
||||
#define F_ISNS_ADMIN_FLAGS_DEFAULT_DD 0x0008
|
||||
#define F_ISNS_ADMIN_FLAGS_RESERVED 0xFFF0
|
||||
|
||||
#define F_ISNS_SRV_SEC_BITMAP_ENABLED 0x0001
|
||||
#define F_ISNS_SRV_SEC_BITMAP_IKE_IPSEC 0x0002
|
||||
#define F_ISNS_SRV_SEC_BITMAP_MAIN_MODE 0x0004
|
||||
#define F_ISNS_SRV_SEC_BITMAP_AGGRESSIVE 0x0008
|
||||
#define F_ISNS_SRV_SEC_BITMAP_PFS 0x0010
|
||||
#define F_ISNS_SRV_SEC_BITMAP_TRASPORT_MODE 0x0020
|
||||
#define F_ISNS_SRV_SEC_BITMAP_TUNNEL_MODE 0x0040
|
||||
#define F_ISNS_SRV_SEC_BITMAP_RESERVED 0xFF80
|
||||
|
||||
static const true_false_string tfs_fqdn_s = {
|
||||
"Server",
|
||||
"Client"
|
||||
|
@ -796,6 +871,16 @@ static const true_false_string tfs_fqdn_n = {
|
|||
"Some server updates"
|
||||
};
|
||||
|
||||
static const true_false_string tfs_isns_function_dd_based_auth = {
|
||||
"Automatically allowed access",
|
||||
"Explicitly performed",
|
||||
};
|
||||
|
||||
static const true_false_string tfs_isns_functions_sec_distrib = {
|
||||
"Download from iSNS server",
|
||||
"By other means",
|
||||
};
|
||||
|
||||
enum field_type {
|
||||
special,
|
||||
none,
|
||||
|
@ -879,6 +964,8 @@ static int dissect_vendor_cl_suboption(packet_info *pinfo, proto_item *v_ti, pro
|
|||
tvbuff_t *tvb, int optoff, int optend);
|
||||
static int dissect_vendor_generic_suboption(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
|
||||
tvbuff_t *tvb, int optoff, int optend);
|
||||
static int dissect_isns(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
|
||||
tvbuff_t *tvb, int optoff, int optlen);
|
||||
|
||||
#define OPT53_DISCOVER "Discover"
|
||||
/* http://www.iana.org/assignments/bootp-dhcp-parameters */
|
||||
|
@ -1147,7 +1234,7 @@ static struct opt_info default_bootp_opt[BOOTP_OPT_NUM] = {
|
|||
/* 80 */ { "Rapid commit", opaque, NULL },
|
||||
/* 81 */ { "Client Fully Qualified Domain Name", special, NULL},
|
||||
/* 82 */ { "Agent Information Option", special, NULL},
|
||||
/* 83 */ { "iSNS [TODO:RFC4174]", opaque, NULL },
|
||||
/* 83 */ { "iSNS", opaque, NULL },
|
||||
/* 84 */ { "Removed/Unassigned", opaque, NULL },
|
||||
/* 85 */ { "Novell Directory Services Servers", special, NULL},
|
||||
/* 86 */ { "Novell Directory Services Tree Name", string, &hf_bootp_option_novell_ds_tree_name },
|
||||
|
@ -2206,6 +2293,10 @@ bootp_option(tvbuff_t *tvb, packet_info *pinfo, proto_tree *bp_tree, proto_item
|
|||
optoff = bootp_dhcp_decode_agent_info(pinfo, vti, v_tree, tvb, optoff, optend);
|
||||
break;
|
||||
|
||||
case 83: /* iSNS Option (RFC 4174) */
|
||||
optoff = dissect_isns(pinfo, vti, v_tree, tvb, optoff, optlen);
|
||||
break;
|
||||
|
||||
case 85: /* Novell Servers (RFC 2241) */
|
||||
/* Option 85 can be sent as a string */
|
||||
/* Added by Greg Morris (gmorris[AT]novell.com) */
|
||||
|
@ -3367,6 +3458,123 @@ rfc3825_fixpoint_to_decimal(struct rfc3825_location_fixpoint_t *fixpoint, struct
|
|||
return RFC3825_NOERROR;
|
||||
}
|
||||
|
||||
static int dissect_isns(packet_info *pinfo, proto_item *v_ti, proto_tree *v_tree,
|
||||
tvbuff_t *tvb, int optoff, int optlen)
|
||||
{
|
||||
static const int *isns_functions_hf_flags[] = {
|
||||
&hf_bootp_option_isns_functions_enabled,
|
||||
&hf_bootp_option_isns_functions_dd_authorization,
|
||||
&hf_bootp_option_isns_functions_sec_policy_distibution,
|
||||
&hf_bootp_option_isns_functions_reserved,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const int *isns_dda_hf_flags[] = {
|
||||
&hf_bootp_option_isns_discovery_domain_access_enabled,
|
||||
&hf_bootp_option_isns_discovery_domain_access_control_node,
|
||||
&hf_bootp_option_isns_discovery_domain_access_iscsi_target,
|
||||
&hf_bootp_option_isns_discovery_domain_access_iscsi_inititator,
|
||||
&hf_bootp_option_isns_discovery_domain_access_ifcp_target_port,
|
||||
&hf_bootp_option_isns_discovery_domain_access_ifcp_initiator_port,
|
||||
&hf_bootp_option_isns_discovery_domain_access_reserved,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const int *isns_administrative_flags[] = {
|
||||
&hf_bootp_option_isns_administrative_flags_enabled,
|
||||
&hf_bootp_option_isns_administrative_flags_heartbeat,
|
||||
&hf_bootp_option_isns_administrative_flags_management_scns,
|
||||
&hf_bootp_option_isns_administrative_flags_default_dd,
|
||||
&hf_bootp_option_isns_administrative_flags_reserved,
|
||||
NULL
|
||||
};
|
||||
|
||||
static const int *isns_server_security_flags[] = {
|
||||
&hf_bootp_option_isns_server_security_bitmap_enabled,
|
||||
&hf_bootp_option_isns_server_security_bitmap_ike_ipsec_enabled,
|
||||
&hf_bootp_option_isns_server_security_bitmap_main_mode,
|
||||
&hf_bootp_option_isns_server_security_bitmap_aggressive_mode,
|
||||
&hf_bootp_option_isns_server_security_bitmap_pfs,
|
||||
&hf_bootp_option_isns_server_security_bitmap_transport_mode,
|
||||
&hf_bootp_option_isns_server_security_bitmap_tunnel_mode,
|
||||
&hf_bootp_option_isns_server_security_bitmap_reserved,
|
||||
NULL
|
||||
};
|
||||
|
||||
guint16 function_flags, dd_access_flags, administrative_flags;
|
||||
guint32 server_security_flags;
|
||||
proto_tree *tree;
|
||||
proto_item *item;
|
||||
int optend, heartbeat_set = 0;
|
||||
|
||||
if (optlen < 14) {
|
||||
expert_add_info_format(pinfo, v_ti, &ei_bootp_bad_length, "length must be >= 14");
|
||||
return optoff;
|
||||
}
|
||||
optend = optoff + optlen;
|
||||
|
||||
item = proto_tree_add_bitmask(v_tree, tvb, optoff, hf_bootp_option_isns_functions,
|
||||
ett_bootp_isns_functions, isns_functions_hf_flags, ENC_BIG_ENDIAN);
|
||||
function_flags = tvb_get_ntohs(tvb, optoff);
|
||||
/* RFC 4174, section "2.1. iSNS Functions Field" specifies that if
|
||||
* the field "Function Fields Enabled" is set to 0, then "the contents
|
||||
* of all other iSNS Function fields MUST be ignored. We will display
|
||||
* the fields but add an informational expert info. This goes for all
|
||||
* the bitmasks: iSNS Functions, DD Access, Administrative Flags, iSNS
|
||||
* Server Security Bitmap */
|
||||
if (ISNS_BITFIELD_NZ_MUST_BE_IGNORED(function_flags, F_ISNS_FUNCTIONS_ENABLED))
|
||||
expert_add_info(pinfo, item, &ei_bootp_option_isns_ignored_bitfield);
|
||||
|
||||
optoff += 2;
|
||||
item = proto_tree_add_bitmask(v_tree, tvb, optoff, hf_bootp_option_isns_discovery_domain_access,
|
||||
ett_bootp_isns_discovery_domain_access, isns_dda_hf_flags, ENC_BIG_ENDIAN);
|
||||
dd_access_flags = tvb_get_ntohs(tvb, optoff);
|
||||
if (ISNS_BITFIELD_NZ_MUST_BE_IGNORED(dd_access_flags, F_ISNS_DD_ACCESS_ENABLED))
|
||||
expert_add_info(pinfo, item, &ei_bootp_option_isns_ignored_bitfield);
|
||||
|
||||
optoff += 2;
|
||||
administrative_flags = tvb_get_ntohs(tvb, optoff);
|
||||
if (administrative_flags & F_ISNS_ADMIN_FLAGS_ENABLED) {
|
||||
if ((administrative_flags & F_ISNS_ADMIN_FLAGS_HEARTBEAT)) {
|
||||
if (optlen < 18) {
|
||||
expert_add_info_format(pinfo, v_ti, &ei_bootp_bad_length, "length must be >= 18");
|
||||
return optoff;
|
||||
}
|
||||
heartbeat_set = 1;
|
||||
}
|
||||
}
|
||||
item = proto_tree_add_bitmask(v_tree, tvb, optoff, hf_bootp_option_isns_administrative_flags,
|
||||
ett_bootp_isns_administrative_flags, isns_administrative_flags, ENC_BIG_ENDIAN);
|
||||
if (ISNS_BITFIELD_NZ_MUST_BE_IGNORED(administrative_flags, F_ISNS_ADMIN_FLAGS_ENABLED))
|
||||
expert_add_info(pinfo, item, &ei_bootp_option_isns_ignored_bitfield);
|
||||
|
||||
optoff += 2;
|
||||
item = proto_tree_add_bitmask(v_tree, tvb, optoff, hf_bootp_option_isns_server_security_bitmap,
|
||||
ett_bootp_isns_server_security_bitmap, isns_server_security_flags, ENC_BIG_ENDIAN);
|
||||
server_security_flags = tvb_get_ntohl(tvb, optoff);
|
||||
if (ISNS_BITFIELD_NZ_MUST_BE_IGNORED(server_security_flags, F_ISNS_SRV_SEC_BITMAP_ENABLED))
|
||||
expert_add_info(pinfo, item, &ei_bootp_option_isns_ignored_bitfield);
|
||||
|
||||
optoff += 4;
|
||||
if (heartbeat_set) {
|
||||
proto_tree_add_item(v_tree, hf_bootp_option_isns_heartbeat_originator_addr,
|
||||
tvb, optoff, 4, ENC_BIG_ENDIAN);
|
||||
optoff += 4;
|
||||
}
|
||||
|
||||
proto_tree_add_item(v_tree, hf_bootp_option_isns_primary_server_addr,
|
||||
tvb, optoff, 4, ENC_BIG_ENDIAN);
|
||||
|
||||
optoff += 4;
|
||||
if (optoff < optend) {
|
||||
tree = proto_tree_add_subtree(v_tree, tvb, optoff, 0, ett_bootp_isns_secondary_server_addr,
|
||||
&item, "Secondary iSNS Servers");
|
||||
optoff += bootp_handle_basic_types(pinfo, tree, item, tvb, ipv4_list, optoff, optend - optoff,
|
||||
&hf_bootp_option_isns_secondary_server_addr_list, NULL);
|
||||
}
|
||||
return optoff;
|
||||
}
|
||||
|
||||
static const value_string option43_cl_suboption_vals[] = {
|
||||
{ 0, "Padding" },
|
||||
{ 1, "Suboption Request List" },
|
||||
|
@ -7208,6 +7416,162 @@ proto_register_bootp(void)
|
|||
"Option 82:152 Server ID Override (Cisco proprietary)", HFILL }},
|
||||
|
||||
|
||||
{ &hf_bootp_option_isns_functions,
|
||||
{ "iSNS Functions", "bootp.option.isns.functions",
|
||||
FT_UINT16, BASE_HEX, NULL, 0x00,
|
||||
"iSNS: the functions supported by the iSNS servers", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_functions_enabled,
|
||||
{ "Function Fields Enabled", "bootp.option.isns.functions.enabled",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_FUNCTIONS_ENABLED,
|
||||
"If set to zero, then the contents of all other iSNS Function fields MUST be ignored", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_functions_dd_authorization,
|
||||
{ "Discovery Domain based Authorization", "bootp.option.isns.functions.dd_base_authorization",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_isns_function_dd_based_auth), F_ISNS_FUNCTIONS_DD_AUTH,
|
||||
"If set to zero, then access authorization must be explicitly performed by each device", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_functions_sec_policy_distibution,
|
||||
{ "Security Policy Distribution", "bootp.option.isns.functions.sec_policy_distribution",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_isns_functions_sec_distrib), F_ISNS_FUNCTIONS_SEC_POLICY,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_functions_reserved,
|
||||
{ "Reserved flags", "bootp.option.isns.functions.reserved",
|
||||
FT_UINT16, BASE_HEX, NULL, F_ISNS_FUNCTIONS_RESERVED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access,
|
||||
{ "Discovery Domain Access flags", "bootp.option.isns.discovery_domain_access",
|
||||
FT_UINT16, BASE_HEX, NULL, 0x00,
|
||||
"iSNS: the types of iSNS clients that are allowed to modify Discovery Domains", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_enabled,
|
||||
{ "Discovery Domain Enabled", "bootp.option.isns.discovery_domain_access.enabled",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_ENABLED,
|
||||
"If set to zero, then the contents of the remainder of this field MUST be ignored", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_control_node,
|
||||
{ "Control Node", "bootp.option.isns.discovery_domain_access_control.node",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_CTRL_NODE,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_iscsi_target,
|
||||
{ "iSCSI Target", "bootp.option.isns.discovery_domain_access.iscsi_target",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_ISCSI_TARGET,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_iscsi_inititator,
|
||||
{ "iSCSI Initiator", "bootp.option.isns.discovery_domain_access.iscsi_initiator",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_ISCSI_INITIATOR,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_ifcp_target_port,
|
||||
{ "iFCP Target Port", "bootp.option.isns.discovery_domain_access.ifcp_target_port",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_IFCP_TARGET_PORT,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_ifcp_initiator_port,
|
||||
{ "iFCP Initiator Port", "bootp.option.isns.discovery_domain_access.initiator_target_port",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_DD_ACCESS_IFCP_INITIATOR_PORT,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_discovery_domain_access_reserved,
|
||||
{ "Reserved Flags", "bootp.option.isns.discovery_domain_access.reserved",
|
||||
FT_UINT16, BASE_HEX, NULL, F_ISNS_DD_ACCESS_RESERVED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags,
|
||||
{ "Administrative Flags", "bootp.option.isns.administrative_flags",
|
||||
FT_UINT16, BASE_HEX, NULL, 0x00,
|
||||
"iSNS: administrative settings for the iSNS servers discovered through the DHCP query", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags_enabled,
|
||||
{ "Administrative Flags Enabled", "bootp.option.isns.administrative_flags.enabled",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_ADMIN_FLAGS_ENABLED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags_heartbeat,
|
||||
{ "Heartbeat", "bootp.option.isns.administrative_flags.heartbeat",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_ADMIN_FLAGS_HEARTBEAT,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags_management_scns,
|
||||
{ "Management SCNs", "bootp.option.isns.administrative_flags.management_scns",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_ADMIN_FLAGS_MANAGEMENT_SCNS,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags_default_dd,
|
||||
{ "Default Discovery Domain", "bootp.option.isns.administrative_flags.default_discovery_domain",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_ADMIN_FLAGS_DEFAULT_DD,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_administrative_flags_reserved,
|
||||
{ "Reserved Flags", "bootp.option.isns.administrative_flags.reserved",
|
||||
FT_UINT16, BASE_HEX, NULL, F_ISNS_ADMIN_FLAGS_RESERVED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap,
|
||||
{ "iSNS Server Security Bitmap", "bootp.option.isns.server_security_bitmap",
|
||||
FT_UINT32, BASE_HEX, NULL, 0x00,
|
||||
"iSNS: server security settings", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_enabled,
|
||||
{ "Server Security Bitmap Enabled", "bootp.option.isns.server_security_bitmap.enabled",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_yes_no), F_ISNS_SRV_SEC_BITMAP_ENABLED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_ike_ipsec_enabled,
|
||||
{ "IKE/IPSec", "bootp.option.isns.server_security_bitmap.ike_ipsec_enabled",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), F_ISNS_SRV_SEC_BITMAP_IKE_IPSEC,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_main_mode,
|
||||
{ "Main Mode", "bootp.option.isns.server_security_bitmap.main_mode",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), F_ISNS_SRV_SEC_BITMAP_MAIN_MODE,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_aggressive_mode,
|
||||
{ "Aggresive Mode", "bootp.option.isns.server_security_bitmap.aggressive_mode",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), F_ISNS_SRV_SEC_BITMAP_AGGRESSIVE,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_pfs,
|
||||
{ "PFS", "bootp.option.isns.server_security_bitmap.pfs",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_enabled_disabled), F_ISNS_SRV_SEC_BITMAP_PFS,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_transport_mode,
|
||||
{ "Transport Mode", "bootp.option.isns.server_security_bitmap.transport_mode",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_preferred_no_preference), F_ISNS_SRV_SEC_BITMAP_TRASPORT_MODE,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_tunnel_mode,
|
||||
{ "Tunnel Mode", "bootp.option.isns.server_security_bitmap.tunnel_mode",
|
||||
FT_BOOLEAN, 16, TFS(&tfs_preferred_no_preference), F_ISNS_SRV_SEC_BITMAP_TUNNEL_MODE,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_server_security_bitmap_reserved,
|
||||
{ "Reserved Flags", "bootp.option.isns.server_security_bitmap.reserved",
|
||||
FT_UINT16, BASE_HEX, NULL, F_ISNS_SRV_SEC_BITMAP_RESERVED,
|
||||
NULL, HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_primary_server_addr,
|
||||
{ "Primary Server Address", "bootp.option.isns.primary_server_addr",
|
||||
FT_IPv4, BASE_NONE, NULL, 0x00,
|
||||
"iSNS: IP address of the primary server", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_heartbeat_originator_addr,
|
||||
{ "Heartbeat Originator Address", "bootp.option.isns.heartbeat_originator_addr",
|
||||
FT_IPv4, BASE_NONE, NULL, 0x00,
|
||||
"iSNS: IP address from which the iSNS heartbeat originates", HFILL }},
|
||||
|
||||
{ &hf_bootp_option_isns_secondary_server_addr_list,
|
||||
{ "Secondary Server Address", "bootp.option.isns.secondary_server_addr",
|
||||
FT_IPv4, BASE_NONE, NULL, 0x00,
|
||||
"iSNS: a list of IP addresses of the secondary iSNS servers", HFILL }},
|
||||
|
||||
|
||||
{ &hf_bootp_option_novell_dss_string,
|
||||
{ "Novell Directory Services Servers String", "bootp.option.novell_dss.string",
|
||||
FT_STRINGZ, BASE_NONE, NULL, 0x0,
|
||||
|
@ -7803,6 +8167,11 @@ proto_register_bootp(void)
|
|||
&ett_bootp_filename_option,
|
||||
&ett_bootp_server_hostname,
|
||||
&ett_bootp_fqdn_flags,
|
||||
&ett_bootp_isns_functions,
|
||||
&ett_bootp_isns_discovery_domain_access,
|
||||
&ett_bootp_isns_administrative_flags,
|
||||
&ett_bootp_isns_server_security_bitmap,
|
||||
&ett_bootp_isns_secondary_server_addr,
|
||||
};
|
||||
|
||||
static ei_register_info ei[] = {
|
||||
|
@ -7829,6 +8198,7 @@ proto_register_bootp(void)
|
|||
{ &ei_bootp_client_address_not_given, { "bootp.client_address_not_given", PI_PROTOCOL, PI_NOTE, "Client address not given", EXPFILL }},
|
||||
{ &ei_bootp_server_name_overloaded_by_dhcp, { "bootp.server_name_overloaded_by_dhcp", PI_PROTOCOL, PI_NOTE, "Server name option overloaded by DHCP", EXPFILL }},
|
||||
{ &ei_bootp_boot_filename_overloaded_by_dhcp, { "bootp.boot_filename_overloaded_by_dhcp", PI_PROTOCOL, PI_NOTE, "Boot file name option overloaded by DHCP", EXPFILL }},
|
||||
{ &ei_bootp_option_isns_ignored_bitfield, { "bootp.option.isns.ignored_bitfield", PI_PROTOCOL, PI_NOTE, "Enabled field is not set - non-zero bitmask ignored", EXPFILL }},
|
||||
};
|
||||
|
||||
static tap_param bootp_stat_params[] = {
|
||||
|
|
|
@ -90,4 +90,5 @@ const true_false_string tfs_defined_not_defined = { "Defined", "Not defined" };
|
|||
const true_false_string tfs_constructed_primitive = { "Constructed", "Primitive" };
|
||||
const true_false_string tfs_client_server = { "Client", "Server" };
|
||||
const true_false_string tfs_server_client = { "Server", "Client" };
|
||||
const true_false_string tfs_preferred_no_preference = { "Preferred", "No preference" };
|
||||
|
||||
|
|
|
@ -105,6 +105,7 @@ WS_DLL_PUBLIC const true_false_string tfs_defined_not_defined;
|
|||
WS_DLL_PUBLIC const true_false_string tfs_constructed_primitive;
|
||||
WS_DLL_PUBLIC const true_false_string tfs_client_server;
|
||||
WS_DLL_PUBLIC const true_false_string tfs_server_client;
|
||||
WS_DLL_PUBLIC const true_false_string tfs_preferred_no_preference;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue