Path: blob/master/10-ARP-implementation-using-UDP/arp.c
137 views
#include<sys/types.h>1#include<sys/socket.h>2#include<net/if_arp.h>3#include<sys/ioctl.h>4#include<stdio.h>5#include<string.h>6#include<unistd.h>7#include<math.h>8#include<complex.h>9#include<arpa/inet.h>10#include<netinet/in.h>11#include<netinet/if_ether.h>12#include<net/ethernet.h>13#include<stdlib.h>14int main()15{16struct sockaddr_in sin={0};17struct arpreq myarp={{0}};18unsigned char *ptr;19int sd;20sin.sin_family=AF_INET;21printf("Enter IP address: ");22char ip[20];23scanf("%s", ip); if(inet_pton(AF_INET,ip,&sin.sin_addr)==0) {24printf("IP address Entered '%s' is not valid \n",ip);25exit(0);26}27memcpy(&myarp.arp_pa,&sin,sizeof(myarp.arp_pa));28strcpy(myarp.arp_dev,"echo");29sd=socket(AF_INET,SOCK_DGRAM,0);30printf("\nSend ARP request\n");31if(ioctl(sd,SIOCGARP,&myarp)==1)32{33printf("No Entry in ARP cache for '%s'\n",ip);34exit(0);35}36ptr=&myarp.arp_pa.sa_data[0];37printf("Received ARP Reply\n");38printf("\nMAC Address for '%s' : ",ip);39printf("%p:%p:%p:%p:%p:%p\n",ptr,(ptr+1),(ptr+2),(ptr+3),(ptr+4),(ptr+5));40return 0;41}4243