44arp.c (186119) | 44arp.c (246143) |
---|---|
1/* $FreeBSD: head/contrib/ipfilter/ipsend/44arp.c 186119 2008-12-15 06:10:57Z qingli $ */ | 1/* $FreeBSD: head/contrib/ipfilter/ipsend/44arp.c 246143 2013-01-31 08:55:21Z glebius $ */ |
2 3/* 4 * Based upon 4.4BSD's /usr/sbin/arp 5 */ 6#include <sys/param.h> 7#include <sys/file.h> 8#include <sys/socket.h> 9#include <sys/sysctl.h> --- 57 unchanged lines hidden (view full) --- 67 68int arp(addr, eaddr) 69char *addr, *eaddr; 70{ 71 int mib[6]; 72 size_t needed; 73 char *lim, *buf, *next; 74 struct rt_msghdr *rtm; | 2 3/* 4 * Based upon 4.4BSD's /usr/sbin/arp 5 */ 6#include <sys/param.h> 7#include <sys/file.h> 8#include <sys/socket.h> 9#include <sys/sysctl.h> --- 57 unchanged lines hidden (view full) --- 67 68int arp(addr, eaddr) 69char *addr, *eaddr; 70{ 71 int mib[6]; 72 size_t needed; 73 char *lim, *buf, *next; 74 struct rt_msghdr *rtm; |
75 struct sockaddr_inarp *sin; | 75 struct sockaddr_in *sin; |
76 struct sockaddr_dl *sdl; 77 78#ifdef IPSEND 79 if (arp_getipv4(addr, ether) == 0) 80 return 0; 81#endif 82 83 if (!addr) --- 24 unchanged lines hidden (view full) --- 108 { 109 perror("actual retrieval of routing table"); 110 exit(-1); 111 } 112 lim = buf + needed; 113 for (next = buf; next < lim; next += rtm->rtm_msglen) 114 { 115 rtm = (struct rt_msghdr *)next; | 76 struct sockaddr_dl *sdl; 77 78#ifdef IPSEND 79 if (arp_getipv4(addr, ether) == 0) 80 return 0; 81#endif 82 83 if (!addr) --- 24 unchanged lines hidden (view full) --- 108 { 109 perror("actual retrieval of routing table"); 110 exit(-1); 111 } 112 lim = buf + needed; 113 for (next = buf; next < lim; next += rtm->rtm_msglen) 114 { 115 rtm = (struct rt_msghdr *)next; |
116 sin = (struct sockaddr_inarp *)(rtm + 1); | 116 sin = (struct sockaddr_in *)(rtm + 1); |
117 sdl = (struct sockaddr_dl *)(sin + 1); 118 if (!bcmp(addr, (char *)&sin->sin_addr, 119 sizeof(struct in_addr))) 120 { 121 bcopy(LLADDR(sdl), eaddr, sdl->sdl_alen); 122 return 0; 123 } 124 } 125 return -1; 126} | 117 sdl = (struct sockaddr_dl *)(sin + 1); 118 if (!bcmp(addr, (char *)&sin->sin_addr, 119 sizeof(struct in_addr))) 120 { 121 bcopy(LLADDR(sdl), eaddr, sdl->sdl_alen); 122 return 0; 123 } 124 } 125 return -1; 126} |