There currently isn't a satisfactory way to indicate that one or more of the fields in the extended_switch structure is unknown to the sFlow exporter.
/* Extended Switch Data */ /* opaque = flow_data; enterprise = 0; format = 1001 */ /* Note: For untagged ingress ports, use the assigned vlan and priority of the port for the src_vlan and src_priority values. For untagged egress ports, use the values for dst_vlan and dst_priority that would have been placed in the 802.Q tag had the egress port been a tagged member of the VLAN instead of an untagged member. */ struct extended_switch { unsigned int src_vlan; /* The 802.1Q VLAN id of incoming frame */ unsigned int src_priority; /* The 802.1p priority of incoming frame */ unsigned int dst_vlan; /* The 802.1Q VLAN id of outgoing frame */ unsigned int dst_priority; /* The 802.1p priority of outgoing frame */ } Since 0 is a valid value for both 802.1Q VLAN 802.1p priority it should not be used to encode the unknown value. Rather than omit the whole structure because one field isn't known, it makes sense to define an unambiguous value to indicate that a field is unknown. Fortunately these fields have relatively small maximum values, vlan <= 4096 and priority <= 7, so an unambiguous choice for an unknown value would be 0xffffffff (Note: this same value that sFlow currently uses to indicate that a 32 bit counter value is unknown). If there are no objections, I think it would make sense to include a note to this effect on Specifications page on sFlow.org. Peter