diff options
author | Aaditya Dhruv <[email protected]> | 2025-07-29 22:07:21 -0500 |
---|---|---|
committer | Aaditya Dhruv <[email protected]> | 2025-07-29 22:07:21 -0500 |
commit | 4c595bf45e87269d541b30b8012512cba15521f7 (patch) | |
tree | 6d3b8e38f20b3695c59a6b70e522bf8810fb53ec | |
parent | b3a344f2f79ca506cdadcfc39c5617c48546bc2f (diff) |
Add arp_packet struct and parsing in eth_recv
-rw-r--r-- | include/junk/network.h | 15 | ||||
-rw-r--r-- | src/network.c | 4 |
2 files changed, 18 insertions, 1 deletions
diff --git a/include/junk/network.h b/include/junk/network.h index 73dd127..12a3af0 100644 --- a/include/junk/network.h +++ b/include/junk/network.h @@ -2,6 +2,7 @@ //Layer 4, TCP +#include <linux/if_ether.h> int tcp_ipv4_send(char* ip, char* port, char* data); int tcp_ipv4_recv(char* ip, char* port, char* data); int ipv4_bind(char* ip, char* port, char* data); @@ -11,3 +12,17 @@ int ipv4_bind(char* ip, char* port, char* data); int eth_bind(char address[]); int eth_send(int sockfd, char* data); int eth_recv(int sockfd); + +typedef struct ethhdr ethhdr; + +typedef struct arp_packet { + unsigned char hardware_type[2]; + unsigned char protocol_type[2]; + unsigned char hardware_length[1]; + unsigned char protocol_length[1]; + unsigned char operation[2]; + unsigned char sender_hardware_address[6]; + unsigned char sender_protocol_address[4]; + unsigned char target_hardware_address[6]; + unsigned char target_protocol_address[4]; + } arp_packet; diff --git a/src/network.c b/src/network.c index 2174f47..0e32677 100644 --- a/src/network.c +++ b/src/network.c @@ -124,10 +124,12 @@ int eth_recv(int sockfd) { } else { fprintf(stderr, "\nCharacters:\n"); - struct ethhdr* recv_struct = (struct ethhdr*) buffer; + ethhdr* recv_struct = (ethhdr*) buffer; fprintf(stderr, "%s: source mac (%02x:%02x:%02x:%02x:%02x:%02x)\n", TAG, recv_struct->h_source[0], recv_struct->h_source[1], recv_struct->h_source[2], recv_struct->h_source[3], recv_struct->h_source[4], recv_struct->h_source[5]); fprintf(stderr, "%s: dest mac (%02x:%02x:%02x:%02x:%02x:%02x)\n", TAG, recv_struct->h_dest[0], recv_struct->h_dest[1], recv_struct->h_dest[2], recv_struct->h_dest[3], recv_struct->h_dest[4], recv_struct->h_dest[5]); + arp_packet* packet = (arp_packet*) (buffer + sizeof (ethhdr)); + return 0; } } |