MCPcopy Create free account
hub / github.com/F-Stack/f-stack / export_add

Function export_add

freebsd/netgraph/netflow/netflow.c:1043–1084  ·  view source on GitHub ↗

Add export record to dgram. */

Source from the content-addressed store, hash-verified

1041
1042/* Add export record to dgram. */
1043static int
1044export_add(item_p item, struct flow_entry *fle)
1045{
1046 struct netflow_v5_export_dgram *dgram = mtod(NGI_M(item),
1047 struct netflow_v5_export_dgram *);
1048 struct netflow_v5_header *header = &dgram->header;
1049 struct netflow_v5_record *rec;
1050
1051 rec = &dgram->r[header->count];
1052 header->count ++;
1053
1054 KASSERT(header->count <= NETFLOW_V5_MAX_RECORDS,
1055 ("ng_netflow: export too big"));
1056
1057 /* Fill in export record. */
1058 rec->src_addr = fle->f.r.r_src.s_addr;
1059 rec->dst_addr = fle->f.r.r_dst.s_addr;
1060 rec->next_hop = fle->f.next_hop.s_addr;
1061 rec->i_ifx = htons(fle->f.fle_i_ifx);
1062 rec->o_ifx = htons(fle->f.fle_o_ifx);
1063 rec->packets = htonl(fle->f.packets);
1064 rec->octets = htonl(fle->f.bytes);
1065 rec->first = htonl(MILLIUPTIME(fle->f.first));
1066 rec->last = htonl(MILLIUPTIME(fle->f.last));
1067 rec->s_port = fle->f.r.r_sport;
1068 rec->d_port = fle->f.r.r_dport;
1069 rec->flags = fle->f.tcp_flags;
1070 rec->prot = fle->f.r.r_ip_p;
1071 rec->tos = fle->f.r.r_tos;
1072 rec->dst_mask = fle->f.dst_mask;
1073 rec->src_mask = fle->f.src_mask;
1074 rec->pad1 = 0;
1075 rec->pad2 = 0;
1076
1077 /* Not supported fields. */
1078 rec->src_as = rec->dst_as = 0;
1079
1080 if (header->count == NETFLOW_V5_MAX_RECORDS)
1081 return (1); /* end of datagram */
1082 else
1083 return (0);
1084}
1085
1086/* Periodic flow expiry run. */
1087void

Callers 1

expire_flowFunction · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected