]> The Tcpdump Group git mirrors - tcpdump/blobdiff - print-sflow.c
Add CAP_FCNTL and use cap_fcntls_limit().
[tcpdump] / print-sflow.c
index 07dcb9cec6868adf50cce9ae63f90d7d9e0aa949..da72848d15f71adb64b089bb8ed4a616faefd2b8 100644 (file)
  */
 
 struct sflow_datagram_t {
-    u_int8_t   version[4];
-    u_int8_t   ip_version[4];
-    u_int8_t   agent[4];
-    u_int8_t   agent_id[4];
-    u_int8_t   seqnum[4];
-    u_int8_t   uptime[4];
-    u_int8_t   samples[4];
+    uint8_t    version[4];
+    uint8_t    ip_version[4];
+    uint8_t    agent[4];
+    uint8_t    agent_id[4];
+    uint8_t    seqnum[4];
+    uint8_t    uptime[4];
+    uint8_t    samples[4];
 };
 
 struct sflow_sample_header {
-    u_int8_t   format[4];
-    u_int8_t   len[4];
+    uint8_t    format[4];
+    uint8_t    len[4];
 };
 
 #define                SFLOW_FLOW_SAMPLE               1
@@ -82,29 +82,29 @@ static const struct tok sflow_format_values[] = {
 };
 
 struct sflow_flow_sample_t {
-    u_int8_t    seqnum[4];
-    u_int8_t    typesource[4];
-    u_int8_t    rate[4];
-    u_int8_t    pool[4];
-    u_int8_t    drops[4];
-    u_int8_t    in_interface[4];
-    u_int8_t    out_interface[4];
-    u_int8_t    records[4];
+    uint8_t    seqnum[4];
+    uint8_t    typesource[4];
+    uint8_t    rate[4];
+    uint8_t    pool[4];
+    uint8_t    drops[4];
+    uint8_t    in_interface[4];
+    uint8_t    out_interface[4];
+    uint8_t    records[4];
 
 };
 
 struct sflow_expanded_flow_sample_t {
-    u_int8_t    seqnum[4];
-    u_int8_t    type[4];
-    u_int8_t    index[4];
-    u_int8_t    rate[4];
-    u_int8_t    pool[4];
-    u_int8_t    drops[4];
-    u_int8_t    in_interface_format[4];
-    u_int8_t    in_interface_value[4];
-    u_int8_t    out_interface_format[4];
-    u_int8_t    out_interface_value[4];
-    u_int8_t    records[4];
+    uint8_t    seqnum[4];
+    uint8_t    type[4];
+    uint8_t    index[4];
+    uint8_t    rate[4];
+    uint8_t    pool[4];
+    uint8_t    drops[4];
+    uint8_t    in_interface_format[4];
+    uint8_t    in_interface_value[4];
+    uint8_t    out_interface_format[4];
+    uint8_t    out_interface_value[4];
+    uint8_t    records[4];
 };
 
 #define        SFLOW_FLOW_RAW_PACKET                   1
@@ -156,47 +156,47 @@ static const struct tok sflow_flow_raw_protocol_values[] = {
 };
 
 struct sflow_expanded_flow_raw_t {
-    u_int8_t    protocol[4];
-    u_int8_t    length[4];
-    u_int8_t    stripped_bytes[4];
-    u_int8_t    header_size[4];
+    uint8_t    protocol[4];
+    uint8_t    length[4];
+    uint8_t    stripped_bytes[4];
+    uint8_t    header_size[4];
 };
 
 struct sflow_ethernet_frame_t {
-    u_int8_t length[4];
-    u_int8_t src_mac[8];
-    u_int8_t dst_mac[8];
-    u_int8_t type[4];
+    uint8_t length[4];
+    uint8_t src_mac[8];
+    uint8_t dst_mac[8];
+    uint8_t type[4];
 };
 
 struct sflow_extended_switch_data_t {
-    u_int8_t src_vlan[4];
-    u_int8_t src_pri[4];
-    u_int8_t dst_vlan[4];
-    u_int8_t dst_pri[4];
+    uint8_t src_vlan[4];
+    uint8_t src_pri[4];
+    uint8_t dst_vlan[4];
+    uint8_t dst_pri[4];
 };
 
 struct sflow_counter_record_t {
-    u_int8_t    format[4];
-    u_int8_t    length[4];
+    uint8_t    format[4];
+    uint8_t    length[4];
 };
 
 struct sflow_flow_record_t {
-    u_int8_t    format[4];
-    u_int8_t    length[4];
+    uint8_t    format[4];
+    uint8_t    length[4];
 };
 
 struct sflow_counter_sample_t {
-    u_int8_t    seqnum[4];
-    u_int8_t    typesource[4];
-    u_int8_t    records[4];
+    uint8_t    seqnum[4];
+    uint8_t    typesource[4];
+    uint8_t    records[4];
 };
 
 struct sflow_expanded_counter_sample_t {
-    u_int8_t    seqnum[4];
-    u_int8_t    type[4];
-    u_int8_t    index[4];
-    u_int8_t    records[4];
+    uint8_t    seqnum[4];
+    uint8_t    type[4];
+    uint8_t    index[4];
+    uint8_t    records[4];
 };
 
 #define         SFLOW_COUNTER_GENERIC           1
@@ -232,67 +232,67 @@ static const struct tok sflow_iface_direction_values[] = {
 };
 
 struct sflow_generic_counter_t {
-    u_int8_t    ifindex[4];
-    u_int8_t    iftype[4];
-    u_int8_t    ifspeed[8];
-    u_int8_t    ifdirection[4];
-    u_int8_t    ifstatus[4];
-    u_int8_t    ifinoctets[8];
-    u_int8_t    ifinunicastpkts[4];
-    u_int8_t    ifinmulticastpkts[4];
-    u_int8_t    ifinbroadcastpkts[4];
-    u_int8_t    ifindiscards[4];
-    u_int8_t    ifinerrors[4];
-    u_int8_t    ifinunkownprotos[4];
-    u_int8_t    ifoutoctets[8];
-    u_int8_t    ifoutunicastpkts[4];
-    u_int8_t    ifoutmulticastpkts[4];
-    u_int8_t    ifoutbroadcastpkts[4];
-    u_int8_t    ifoutdiscards[4];
-    u_int8_t    ifouterrors[4];
-    u_int8_t    ifpromiscmode[4];
+    uint8_t    ifindex[4];
+    uint8_t    iftype[4];
+    uint8_t    ifspeed[8];
+    uint8_t    ifdirection[4];
+    uint8_t    ifstatus[4];
+    uint8_t    ifinoctets[8];
+    uint8_t    ifinunicastpkts[4];
+    uint8_t    ifinmulticastpkts[4];
+    uint8_t    ifinbroadcastpkts[4];
+    uint8_t    ifindiscards[4];
+    uint8_t    ifinerrors[4];
+    uint8_t    ifinunkownprotos[4];
+    uint8_t    ifoutoctets[8];
+    uint8_t    ifoutunicastpkts[4];
+    uint8_t    ifoutmulticastpkts[4];
+    uint8_t    ifoutbroadcastpkts[4];
+    uint8_t    ifoutdiscards[4];
+    uint8_t    ifouterrors[4];
+    uint8_t    ifpromiscmode[4];
 };
 
 struct sflow_ethernet_counter_t {
-    u_int8_t    alignerrors[4];
-    u_int8_t    fcserrors[4];
-    u_int8_t    single_collision_frames[4];
-    u_int8_t    multiple_collision_frames[4];
-    u_int8_t    test_errors[4];
-    u_int8_t    deferred_transmissions[4];
-    u_int8_t    late_collisions[4];
-    u_int8_t    excessive_collisions[4];
-    u_int8_t    mac_transmit_errors[4];
-    u_int8_t    carrier_sense_errors[4];
-    u_int8_t    frame_too_longs[4];
-    u_int8_t    mac_receive_errors[4];
-    u_int8_t    symbol_errors[4];
+    uint8_t    alignerrors[4];
+    uint8_t    fcserrors[4];
+    uint8_t    single_collision_frames[4];
+    uint8_t    multiple_collision_frames[4];
+    uint8_t    test_errors[4];
+    uint8_t    deferred_transmissions[4];
+    uint8_t    late_collisions[4];
+    uint8_t    excessive_collisions[4];
+    uint8_t    mac_transmit_errors[4];
+    uint8_t    carrier_sense_errors[4];
+    uint8_t    frame_too_longs[4];
+    uint8_t    mac_receive_errors[4];
+    uint8_t    symbol_errors[4];
 };
 
 struct sflow_100basevg_counter_t {
-    u_int8_t    in_highpriority_frames[4];
-    u_int8_t    in_highpriority_octets[8];
-    u_int8_t    in_normpriority_frames[4];
-    u_int8_t    in_normpriority_octets[8];
-    u_int8_t    in_ipmerrors[4];
-    u_int8_t    in_oversized[4];
-    u_int8_t    in_data_errors[4];
-    u_int8_t    in_null_addressed_frames[4];
-    u_int8_t    out_highpriority_frames[4];
-    u_int8_t    out_highpriority_octets[8];
-    u_int8_t    transitioninto_frames[4];
-    u_int8_t    hc_in_highpriority_octets[8];
-    u_int8_t    hc_in_normpriority_octets[8];
-    u_int8_t    hc_out_highpriority_octets[8];
+    uint8_t    in_highpriority_frames[4];
+    uint8_t    in_highpriority_octets[8];
+    uint8_t    in_normpriority_frames[4];
+    uint8_t    in_normpriority_octets[8];
+    uint8_t    in_ipmerrors[4];
+    uint8_t    in_oversized[4];
+    uint8_t    in_data_errors[4];
+    uint8_t    in_null_addressed_frames[4];
+    uint8_t    out_highpriority_frames[4];
+    uint8_t    out_highpriority_octets[8];
+    uint8_t    transitioninto_frames[4];
+    uint8_t    hc_in_highpriority_octets[8];
+    uint8_t    hc_in_normpriority_octets[8];
+    uint8_t    hc_out_highpriority_octets[8];
 };
 
 struct sflow_vlan_counter_t {
-    u_int8_t    vlan_id[4];
-    u_int8_t    octets[8];
-    u_int8_t    unicast_pkt[4];
-    u_int8_t    multicast_pkt[4];
-    u_int8_t    broadcast_pkt[4];
-    u_int8_t    discards[4];
+    uint8_t    vlan_id[4];
+    uint8_t    octets[8];
+    uint8_t    unicast_pkt[4];
+    uint8_t    multicast_pkt[4];
+    uint8_t    broadcast_pkt[4];
+    uint8_t    discards[4];
 };
 
 static int
@@ -437,11 +437,11 @@ print_sflow_counter_vlan(netdissect_options *ndo,
 }
 
 struct sflow_processor_counter_t {
-    u_int8_t five_sec_util[4];
-    u_int8_t one_min_util[4];
-    u_int8_t five_min_util[4];
-    u_int8_t total_memory[8];
-    u_int8_t free_memory[8];
+    uint8_t five_sec_util[4];
+    uint8_t one_min_util[4];
+    uint8_t five_min_util[4];
+    uint8_t total_memory[8];
+    uint8_t free_memory[8];
 };
 
 static int
@@ -825,8 +825,8 @@ sflow_print(netdissect_options *ndo,
 
     const u_char *tptr;
     u_int tlen;
-    u_int32_t sflow_sample_type, sflow_sample_len;
-    u_int32_t nsamples;
+    uint32_t sflow_sample_type, sflow_sample_len;
+    uint32_t nsamples;
 
 
     tptr = pptr;
@@ -847,7 +847,7 @@ sflow_print(netdissect_options *ndo,
         ND_PRINT((ndo, "sFlowv%u, %s agent %s, agent-id %u, length %u",
                EXTRACT_32BITS(sflow_datagram->version),
                EXTRACT_32BITS(sflow_datagram->ip_version) == 1 ? "IPv4" : "IPv6",
-               ipaddr_string(sflow_datagram->agent),
+               ipaddr_string(ndo, sflow_datagram->agent),
                EXTRACT_32BITS(sflow_datagram->agent_id),
                len));
         return;
@@ -858,7 +858,7 @@ sflow_print(netdissect_options *ndo,
     ND_PRINT((ndo, "sFlowv%u, %s agent %s, agent-id %u, seqnum %u, uptime %u, samples %u, length %u",
            EXTRACT_32BITS(sflow_datagram->version),
            EXTRACT_32BITS(sflow_datagram->ip_version) == 1 ? "IPv4" : "IPv6",
-           ipaddr_string(sflow_datagram->agent),
+           ipaddr_string(ndo, sflow_datagram->agent),
            EXTRACT_32BITS(sflow_datagram->agent_id),
            EXTRACT_32BITS(sflow_datagram->seqnum),
            EXTRACT_32BITS(sflow_datagram->uptime),