proto_item_append_text(avp_item, "%s", tvb_bytes_to_str(tvb, offset, len));
}
+void radius_ether(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
+ if (len != 6) {
+ proto_item_append_text(avp_item, "[wrong length for ethernet address]");
+ return;
+ }
+
+ proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
+ proto_item_append_text(avp_item, "%s", ether_to_str(tvb_get_ptr(tvb, offset, len)));
+}
+
void radius_ifid(radius_attr_info_t* a, proto_tree* tree, packet_info *pinfo _U_, tvbuff_t* tvb, int offset, int len, proto_item* avp_item) {
proto_tree_add_item(tree, a->hf, tvb, offset, len, FALSE);
proto_item_append_text(avp_item, "%s", tvb_bytes_to_str(tvb, offset, len));
const gchar *name;
guint code;
GHashTable* attrs_by_id;
- gint ett;
+ gint ett;
guint type_octets;
guint length_octets;
gboolean has_flags;
struct _radius_attr_info_t {
const gchar *name;
guint code;
- gboolean encrypt;
+ gboolean encrypt; /* True if attribute has "encrypt=1" option */
gboolean tagged;
radius_attr_dissector_t* type;
radius_avp_dissector_t* dissector;
radius_attr_dissector_t radius_ipxnet;
radius_attr_dissector_t radius_date;
radius_attr_dissector_t radius_abinary;
+radius_attr_dissector_t radius_ether;
radius_attr_dissector_t radius_ifid;
radius_attr_dissector_t radius_byte;
radius_attr_dissector_t radius_short;
<ATTR_W_ID>ipv6prefix { attr_type = radius_ipv6prefix; BEGIN ATTR_W_TYPE; }
<ATTR_W_ID>ipxnet { attr_type = radius_ipxnet; BEGIN ATTR_W_TYPE; }
<ATTR_W_ID>date { attr_type = radius_date; BEGIN ATTR_W_TYPE; }
+<ATTR_W_ID>abinary { attr_type = radius_abinary; BEGIN ATTR_W_TYPE; }
+<ATTR_W_ID>ether { attr_type = radius_ether; BEGIN ATTR_W_TYPE; }
<ATTR_W_ID>ifid { attr_type = radius_ifid; BEGIN ATTR_W_TYPE; }
<ATTR_W_ID>byte { attr_type = radius_integer; BEGIN ATTR_W_TYPE; }
<ATTR_W_ID>short { attr_type = radius_integer; BEGIN ATTR_W_TYPE; }