@@ -971,6 +971,10 @@ void* process_packet (unsigned char *ctx_ptr,
971
971
const struct pcap_pkthdr * header = pkt_header ;
972
972
struct pcap_pkthdr * dyn_header = NULL ;
973
973
974
+ /* initialize MAC addresses */
975
+ mac_addr_t src_mac = {0x00 };
976
+ mac_addr_t dst_mac = {0x00 };
977
+
974
978
/* declare pointers to packet headers */
975
979
ip_hdr_t * ip = NULL ;
976
980
ip_hdrv6_t * ipv6 = NULL ;
@@ -995,7 +999,16 @@ void* process_packet (unsigned char *ctx_ptr,
995
999
joy_log_info ("++++++++++ Packet %lu ++++++++++" , ctx -> stats .num_packets );
996
1000
// packet_count++;
997
1001
1002
+ // Ethernet Type II Header: [[Dest MAC][Source MAC][ETH_TYPE]]
1003
+ // 6bytes 6bytes 2bytes
998
1004
// ethernet = (struct ethernet_hdr*)(packet);
1005
+ unsigned char * sm = (unsigned char * )& (src_mac );
1006
+ unsigned char * dm = (unsigned char * )& (dst_mac );
1007
+ for (int i = 0 ; i < 6 ; i ++ )
1008
+ {
1009
+ * (sm + i ) = packet [i ];
1010
+ * (dm + i ) = packet [i + 6 ];
1011
+ }
999
1012
ether_type = ntohs (* (const uint16_t * )(packet + 12 ));//Offset to get ETH_TYPE
1000
1013
ctx -> curr_pkt_type = 0 ;
1001
1014
/* Support for both normal ethernet, 802.1q and 802.1ad. Distinguish between
@@ -1203,13 +1216,19 @@ void* process_packet (unsigned char *ctx_ptr,
1203
1216
joy_log_info ("Source IPv6: %s" , ipv6_addr );
1204
1217
inet_ntop (AF_INET6 , & ipv6 -> ip_dst , ipv6_addr , INET6_ADDRSTRLEN );
1205
1218
joy_log_info ("Dest IP: %s" , ipv6_addr );
1219
+
1220
+ joy_log_info ("Source MAC: %02x:%02x:%02x:%02x:%02x:%02x:" , * sm , * (sm + 1 ), * (sm + 2 ), * (sm + 3 ), * (sm + 4 ), * (sm + 5 ));
1221
+ joy_log_info ("Dest MAC: %02x:%02x:%02x:%02x:%02x:%02x:" , * dm , * (dm + 1 ), * (dm + 2 ), * (dm + 3 ), * (dm + 4 ), * (dm + 5 ));
1206
1222
joy_log_info ("Len: %u" , ip_len );
1207
1223
joy_log_debug ("IPv6 header len: %u" , (ip_hdr_len + (ipv6_ext_hdrs * 8 )));
1208
1224
} else {
1209
1225
inet_ntop (AF_INET , & ip -> ip_src , ipv4_addr , INET_ADDRSTRLEN );
1210
1226
joy_log_info ("Source IP: %s" , ipv4_addr );
1211
1227
inet_ntop (AF_INET , & ip -> ip_dst , ipv4_addr , INET_ADDRSTRLEN );
1212
1228
joy_log_info ("Dest IP: %s" , ipv4_addr );
1229
+
1230
+ joy_log_info ("Source MAC: %02x:%02x:%02x:%02x:%02x:%02x:" , * sm , * (sm + 1 ), * (sm + 2 ), * (sm + 3 ), * (sm + 4 ), * (sm + 5 ));
1231
+ joy_log_info ("Dest MAC: %02x:%02x:%02x:%02x:%02x:%02x:" , * dm , * (dm + 1 ), * (dm + 2 ), * (dm + 3 ), * (dm + 4 ), * (dm + 5 ));
1213
1232
joy_log_info ("Len: %u" , ip_len );
1214
1233
joy_log_debug ("IP header len: %u" , ip_hdr_len );
1215
1234
}
@@ -1305,6 +1324,10 @@ void* process_packet (unsigned char *ctx_ptr,
1305
1324
}
1306
1325
record -> ip_type = ctx -> curr_pkt_type ;
1307
1326
1327
+ /* Add the MAC addresses */
1328
+ record -> src_mac = src_mac ;
1329
+ record -> dst_mac = dst_mac ;
1330
+
1308
1331
/*
1309
1332
* Get IP ID
1310
1333
*/
0 commit comments