- Timestamp:
- 12/02/09 11:46:57 (11 years ago)
- Branches:
- 4.0.1-hotfixes, cachetimestamps, develop, dpdk-ndag, etsilive, getfragoff, help, libtrace4, master, ndag_format, pfring, rc-4.0.1, rc-4.0.2, rc-4.0.3, rc-4.0.4, ringdecrementfix, ringperformance, ringtimestampfixes
- Children:
- 5c866be
- Parents:
- c7062df
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
tools/tracetop/tracetop.cc
r4325ef8 rcde85f8 103 103 } 104 104 105 static void set_port_for_sockaddr(struct sockaddr *sa,uint16_t port) 106 { 107 switch (sa->sa_family) { 108 case AF_INET: 109 ((struct sockaddr_in *)sa)->sin_port = htons(port); 110 break; 111 case AF_INET6: 112 ((struct sockaddr_in6 *)sa)->sin6_port = htons(port); 113 break; 114 } 115 } 116 117 static void clear_addr_for_sockaddr(struct sockaddr *sa) 118 { 119 switch (sa->sa_family) { 120 case AF_INET: 121 ((struct sockaddr_in *)sa)->sin_addr.s_addr = 0; 122 break; 123 case AF_INET6: 124 memset((void*)&((struct sockaddr_in6 *)sa)->sin6_addr,0,sizeof(((struct sockaddr_in6 *)sa)->sin6_addr)); 125 break; 126 } 127 } 128 129 static uint16_t get_port_from_sockaddr(struct sockaddr *sa) 130 { 131 switch (sa->sa_family) { 132 case AF_INET: 133 return ntohs(((struct sockaddr_in *)sa)->sin_port); 134 break; 135 case AF_INET6: 136 return ntohs(((struct sockaddr_in6 *)sa)->sin6_port); 137 break; 138 } 139 } 140 105 141 struct flowkey_t { 106 142 struct sockaddr_storage sip; … … 121 157 if (c != 0) return c<0; 122 158 } 123 124 if (use_sport && sport != b.sport) return sport < b.sport;125 if (use_dport && dport != b.dport) return dport < b.dport;126 159 127 160 return protocol < b.protocol; … … 161 194 flows_t::iterator it; 162 195 163 if ( use_sip &&trace_get_source_address(packet,(struct sockaddr*)&flowkey.sip)==NULL)196 if (trace_get_source_address(packet,(struct sockaddr*)&flowkey.sip)==NULL) 164 197 flowkey.sip.ss_family = AF_UNSPEC; 165 if (use_dip && trace_get_destination_address(packet,(struct sockaddr*)&flowkey.dip)==NULL) 198 199 if (trace_get_destination_address(packet,(struct sockaddr*)&flowkey.dip)==NULL) 166 200 flowkey.dip.ss_family = AF_UNSPEC; 201 202 if (!use_sip) 203 clear_addr_for_sockaddr((struct sockaddr *)&flowkey.sip); 204 205 if (!use_dip) 206 clear_addr_for_sockaddr((struct sockaddr *)&flowkey.dip); 207 208 if (!use_sport) 209 set_port_for_sockaddr((struct sockaddr *)&flowkey.sip,0); 210 211 if (!use_dport) 212 set_port_for_sockaddr((struct sockaddr *)&flowkey.dip,0); 213 167 214 if (use_protocol && trace_get_transport(packet,&flowkey.protocol, NULL) == NULL) 168 215 flowkey.protocol = 255; 169 if (use_sport) flowkey.sport = trace_get_source_port(packet); 170 if (use_dport) flowkey.dport = trace_get_destination_port(packet); 216 171 217 172 218 it = flows.find(flowkey); … … 191 237 struct sockaddr_storage sip; 192 238 struct sockaddr_storage dip; 193 uint16_t sport;194 uint16_t dport;195 239 uint8_t protocol; 196 240 … … 212 256 data.sip = it->first.sip; 213 257 data.dip = it->first.dip; 214 data.sport = it->first.sport;215 data.dport = it->first.dport;216 258 data.protocol = it->first.protocol; 217 259 pq.push(data); … … 272 314 } 273 315 if (use_sport) 274 printw("%-5d\t", pq.top().sport);316 printw("%-5d\t", get_port_from_sockaddr((struct sockaddr*)&pq.top().sip)); 275 317 if (use_dip) { 276 318 printw("%20s", … … 284 326 } 285 327 if (use_dport) 286 printw("%-5d\t", pq.top().dport);328 printw("%-5d\t", get_port_from_sockaddr((struct sockaddr*)&pq.top().dip)); 287 329 if (use_protocol) { 288 330 struct protoent *proto = getprotobynumber(pq.top().protocol);
Note: See TracChangeset
for help on using the changeset viewer.