464
464
case SFLFLOW_EX_MPLS_FTN: elemSiz = mplsFtnEncodingLength(&elem->flowType.mpls_ftn); break;
465
465
case SFLFLOW_EX_MPLS_LDP_FEC: elemSiz = mplsLdpFecEncodingLength(&elem->flowType.mpls_ldp_fec); break;
466
466
case SFLFLOW_EX_VLAN_TUNNEL: elemSiz = vlanTunnelEncodingLength(&elem->flowType.vlan_tunnel); break;
467
case SFLFLOW_EX_IPV4_TUNNEL_EGRESS:
468
case SFLFLOW_EX_IPV4_TUNNEL_INGRESS:
469
elemSiz = sizeof(SFLSampled_ipv4);
471
case SFLFLOW_EX_VNI_EGRESS:
472
case SFLFLOW_EX_VNI_INGRESS:
473
elemSiz = sizeof(SFLExtended_vni);
468
476
sflError(receiver, "unexpected packet_data_tag");
560
568
putNet32(receiver, elem->flowType.ethernet.eth_type);
562
570
case SFLFLOW_IPV4:
571
case SFLFLOW_EX_IPV4_TUNNEL_EGRESS:
572
case SFLFLOW_EX_IPV4_TUNNEL_INGRESS:
563
573
putNet32(receiver, elem->flowType.ipv4.length);
564
574
putNet32(receiver, elem->flowType.ipv4.protocol);
565
575
put32(receiver, elem->flowType.ipv4.src_ip.addr);
591
601
case SFLFLOW_EX_MPLS_FTN: putMplsFtn(receiver, &elem->flowType.mpls_ftn); break;
592
602
case SFLFLOW_EX_MPLS_LDP_FEC: putMplsLdpFec(receiver, &elem->flowType.mpls_ldp_fec); break;
593
603
case SFLFLOW_EX_VLAN_TUNNEL: putVlanTunnel(receiver, &elem->flowType.vlan_tunnel); break;
604
case SFLFLOW_EX_VNI_EGRESS:
605
case SFLFLOW_EX_VNI_INGRESS:
606
putNet32(receiver, elem->flowType.tunnel_vni.vni);
595
610
sflError(receiver, "unexpected packet_data_tag");
629
644
cs->num_elements++;
630
645
siz += 8; /* tag, length */
631
646
switch(elem->tag) {
632
case SFLCOUNTERS_GENERIC: elemSiz = sizeof(elem->counterBlock.generic); break;
633
case SFLCOUNTERS_ETHERNET: elemSiz = sizeof(elem->counterBlock.ethernet); break;
647
case SFLCOUNTERS_GENERIC: elemSiz = SFL_CTR_GENERIC_XDR_SIZE; break;
648
case SFLCOUNTERS_ETHERNET: elemSiz = SFL_CTR_ETHERNET_XDR_SIZE; break;
634
649
case SFLCOUNTERS_TOKENRING: elemSiz = sizeof(elem->counterBlock.tokenring); break;
635
650
case SFLCOUNTERS_VG: elemSiz = sizeof(elem->counterBlock.vg); break;
636
651
case SFLCOUNTERS_VLAN: elemSiz = sizeof(elem->counterBlock.vlan); break;
652
case SFLCOUNTERS_LACP: elemSiz = SFL_CTR_LACP_XDR_SIZE; break;
653
case SFLCOUNTERS_OPENFLOWPORT: elemSiz = SFL_CTR_OPENFLOWPORT_XDR_SIZE; break;
654
case SFLCOUNTERS_PORTNAME: elemSiz = stringEncodingLength(&elem->counterBlock.portName.portName); break;
655
case SFLCOUNTERS_APP_RESOURCES: elemSiz = SFL_CTR_APP_RESOURCES_XDR_SIZE; break;
656
case SFLCOUNTERS_OVSDP: elemSiz = SFL_CTR_OVSDP_XDR_SIZE; break;
638
658
sflError(receiver, "unexpected counters_tag");
735
755
putNet32(receiver, elem->counterBlock.vlan.broadcastPkts);
736
756
putNet32(receiver, elem->counterBlock.vlan.discards);
758
case SFLCOUNTERS_LACP:
759
putMACAddress(receiver, elem->counterBlock.lacp.actorSystemID);
760
putMACAddress(receiver, elem->counterBlock.lacp.partnerSystemID);
761
putNet32(receiver, elem->counterBlock.lacp.attachedAggID);
762
put32(receiver, elem->counterBlock.lacp.portState.all);
763
putNet32(receiver, elem->counterBlock.lacp.LACPDUsRx);
764
putNet32(receiver, elem->counterBlock.lacp.markerPDUsRx);
765
putNet32(receiver, elem->counterBlock.lacp.markerResponsePDUsRx);
766
putNet32(receiver, elem->counterBlock.lacp.unknownRx);
767
putNet32(receiver, elem->counterBlock.lacp.illegalRx);
768
putNet32(receiver, elem->counterBlock.lacp.LACPDUsTx);
769
putNet32(receiver, elem->counterBlock.lacp.markerPDUsTx);
770
putNet32(receiver, elem->counterBlock.lacp.markerResponsePDUsTx);
772
case SFLCOUNTERS_OPENFLOWPORT:
773
putNet64(receiver, elem->counterBlock.ofPort.datapath_id);
774
putNet32(receiver, elem->counterBlock.ofPort.port_no);
776
case SFLCOUNTERS_PORTNAME:
777
putString(receiver, &elem->counterBlock.portName.portName);
779
case SFLCOUNTERS_APP_RESOURCES:
780
putNet32(receiver, elem->counterBlock.appResources.user_time);
781
putNet32(receiver, elem->counterBlock.appResources.system_time);
782
putNet64(receiver, elem->counterBlock.appResources.mem_used);
783
putNet64(receiver, elem->counterBlock.appResources.mem_max);
784
putNet32(receiver, elem->counterBlock.appResources.fd_open);
785
putNet32(receiver, elem->counterBlock.appResources.fd_max);
786
putNet32(receiver, elem->counterBlock.appResources.conn_open);
787
putNet32(receiver, elem->counterBlock.appResources.conn_max);
789
case SFLCOUNTERS_OVSDP:
790
putNet32(receiver, elem->counterBlock.ovsdp.n_hit);
791
putNet32(receiver, elem->counterBlock.ovsdp.n_missed);
792
putNet32(receiver, elem->counterBlock.ovsdp.n_lost);
793
putNet32(receiver, elem->counterBlock.ovsdp.n_mask_hit);
794
putNet32(receiver, elem->counterBlock.ovsdp.n_flows);
795
putNet32(receiver, elem->counterBlock.ovsdp.n_masks);
739
798
sflError(receiver, "unexpected counters_tag");