Changeset 1014
- Timestamp:
- 09/21/06 16:29:24 (7 years ago)
- Location:
- trunk/lib
- Files:
-
- 2 edited
-
linktypes.c (modified) (3 diffs)
-
protocols.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/lib/linktypes.c
r982 r1014 85 85 case TRACE_TYPE_ATM: return TYPE_ATM; 86 86 case TRACE_TYPE_AAL5: return TYPE_AAL5; 87 } 88 return -1; 89 } 90 91 libtrace_linktype_t arphrd_type_to_libtrace(unsigned int arphrd) { 92 switch(arphrd) { 93 case ARPHRD_ETHER: return TRACE_TYPE_ETH; 94 case ARPHRD_IEEE80211: return TRACE_TYPE_80211; 95 case ARPHRD_80211_RADIOTAP: return TRACE_TYPE_80211_RADIO; 96 } 97 return ~0; 98 } 99 100 unsigned int libtrace_to_arphrd_type(libtrace_linktype_t linktype) { 101 switch(linktype) { 102 case TRACE_TYPE_ETH: return ARPHRD_ETHER; 103 case TRACE_TYPE_80211: return ARPHRD_IEEE80211; 104 case TRACE_TYPE_80211_RADIO: return ARPHRD_80211_RADIOTAP; 87 105 } 88 106 return -1; … … 121 139 hdr->pkttype=TRACE_SLL_OUTGOING; 122 140 if (pcap_dlt_to_libtrace(rt_to_pcap_dlt(packet->type))==TRACE_TYPE_ETH) 123 hdr->hatype = ARPHRD_ETHER;141 hdr->hatype = htons(ARPHRD_ETHER); 124 142 else 125 hdr->hatype = ARPHRD_PPP;143 hdr->hatype = htons(ARPHRD_PPP); 126 144 trace_get_payload_from_link( 127 145 trace_get_link(packet), … … 172 190 switch(trace_get_link_type(packet)) { 173 191 case TRACE_TYPE_LINUX_SLL: 174 switch( ((libtrace_sll_header_t*)packet->payload)175 ->hatype) {192 switch(ntohs(((libtrace_sll_header_t*)packet->payload) 193 ->hatype)) { 176 194 case ARPHRD_PPP: 177 195 packet->type=pcap_dlt_to_rt(DLT_NULL); -
trunk/lib/protocols.c
r1009 r1014 110 110 } 111 111 112 /* NB: type is returned as an ARPHRD_ type for SLL*/ 112 113 static void *trace_get_payload_from_linux_sll(void *link, 113 114 uint16_t *type, uint32_t *remaining) … … 125 126 126 127 /* What kind of wacked out header, has this in host order?! */ 127 if (type) *type = htons(sll->protocol); 128 129 ret=(void*)((char*)sll+sizeof(*sll)); 130 131 switch(sll->hatype) { 132 case ARPHRD_PPP: 133 break; 134 case ARPHRD_ETHER: 135 ret=trace_get_payload_from_ethernet(ret,type,remaining); 136 break; 137 default: 138 /* Unknown hardware type */ 139 return NULL; 140 } 141 142 return ret; 128 //if (type) *type = htons(sll->protocol); 129 130 if (type) *type = ntohs(sll->hatype); 131 132 return (void*)((char*)sll+sizeof(*sll)); 133 143 134 } 144 135 … … 240 231 { 241 232 void *l = NULL; 242 233 uint16_t dummytype; 234 243 235 switch(linktype) { 244 236 case TRACE_TYPE_80211_PRISM: … … 260 252 return link; /* I love the simplicity */ 261 253 case TRACE_TYPE_LINUX_SLL: 262 return trace_get_payload_from_linux_sll(link,type,remaining); 254 l = trace_get_payload_from_linux_sll(link,&dummytype,remaining); 255 if (type) *type = dummytype; 256 return (l ? trace_get_payload_from_link(l, 257 arphrd_type_to_libtrace(dummytype), type, remaining) : NULL); 258 263 259 case TRACE_TYPE_PFLOG: 264 260 return trace_get_payload_from_pflog(link,type,remaining);
Note: See TracChangeset
for help on using the changeset viewer.
