Deleted Added
full compact
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}