projects
/
oweals
/
busybox.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
runsvd: shrink by Vladimir
[oweals/busybox.git]
/
networking
/
arping.c
diff --git
a/networking/arping.c
b/networking/arping.c
index 2277ec55ef4158e43393a03a13a9d569507b632a..aba32b8692c172519b3681cbafe0937303c8a6ad 100644
(file)
--- a/
networking/arping.c
+++ b/
networking/arping.c
@@
-61,10
+61,16
@@
struct globals {
#define received (G.received )
#define brd_recv (G.brd_recv )
#define req_recv (G.req_recv )
#define received (G.received )
#define brd_recv (G.brd_recv )
#define req_recv (G.req_recv )
-#define INIT_G() \
- do { \
- count = -1; \
- } while (0)
+#define INIT_G() do { \
+ count = -1; \
+} while (0)
+
+// If GNUisms are not available...
+//static void *mempcpy(void *_dst, const void *_src, int n)
+//{
+// memcpy(_dst, _src, n);
+// return (char*)_dst + n;
+//}
static int send_pack(struct in_addr *src_addr,
struct in_addr *dst_addr, struct sockaddr_ll *ME,
static int send_pack(struct in_addr *src_addr,
struct in_addr *dst_addr, struct sockaddr_ll *ME,
@@
-75,27
+81,21
@@
static int send_pack(struct in_addr *src_addr,
struct arphdr *ah = (struct arphdr *) buf;
unsigned char *p = (unsigned char *) (ah + 1);
struct arphdr *ah = (struct arphdr *) buf;
unsigned char *p = (unsigned char *) (ah + 1);
- ah->ar_hrd = htons(ME->sll_hatype);
ah->ar_hrd = htons(ARPHRD_ETHER);
ah->ar_pro = htons(ETH_P_IP);
ah->ar_hln = ME->sll_halen;
ah->ar_pln = 4;
ah->ar_op = option_mask32 & ADVERT ? htons(ARPOP_REPLY) : htons(ARPOP_REQUEST);
ah->ar_hrd = htons(ARPHRD_ETHER);
ah->ar_pro = htons(ETH_P_IP);
ah->ar_hln = ME->sll_halen;
ah->ar_pln = 4;
ah->ar_op = option_mask32 & ADVERT ? htons(ARPOP_REPLY) : htons(ARPOP_REQUEST);
- memcpy(p, &ME->sll_addr, ah->ar_hln);
- p += ME->sll_halen;
-
- memcpy(p, src_addr, 4);
- p += 4;
+ p = mempcpy(p, &ME->sll_addr, ah->ar_hln);
+ p = mempcpy(p, src_addr, 4);
if (option_mask32 & ADVERT)
if (option_mask32 & ADVERT)
-
mem
cpy(p, &ME->sll_addr, ah->ar_hln);
+
p = memp
cpy(p, &ME->sll_addr, ah->ar_hln);
else
else
- memcpy(p, &HE->sll_addr, ah->ar_hln);
- p += ah->ar_hln;
+ p = mempcpy(p, &HE->sll_addr, ah->ar_hln);
- memcpy(p, dst_addr, 4);
- p += 4;
+ p = mempcpy(p, dst_addr, 4);
err = sendto(sock_fd, buf, p - buf, 0, (struct sockaddr *) HE, sizeof(*HE));
if (err == p - buf) {
err = sendto(sock_fd, buf, p - buf, 0, (struct sockaddr *) HE, sizeof(*HE));
if (err == p - buf) {
@@
-107,7
+107,7
@@
static int send_pack(struct in_addr *src_addr,
return err;
}
return err;
}
-static void finish(void)
ATTRIBUTE_
NORETURN;
+static void finish(void) NORETURN;
static void finish(void)
{
if (!(option_mask32 & QUIET)) {
static void finish(void)
{
if (!(option_mask32 & QUIET)) {
@@
-173,7
+173,7
@@
static bool recv_pack(unsigned char *buf, int len, struct sockaddr_ll *FROM)
if (ah->ar_pro != htons(ETH_P_IP)
|| (ah->ar_pln != 4)
|| (ah->ar_hln != me.sll_halen)
if (ah->ar_pro != htons(ETH_P_IP)
|| (ah->ar_pln != 4)
|| (ah->ar_hln != me.sll_halen)
- || (len <
sizeof(*ah) + 2 * (4 + ah->ar_hln
)))
+ || (len <
(int)(sizeof(*ah) + 2 * (4 + ah->ar_hln)
)))
return false;
memcpy(&src_ip, p + ah->ar_hln, 4);
return false;
memcpy(&src_ip, p + ah->ar_hln, 4);
@@
-245,7
+245,7
@@
static bool recv_pack(unsigned char *buf, int len, struct sockaddr_ll *FROM)
}
int arping_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
}
int arping_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
-int arping_main(int argc, char **argv)
+int arping_main(int argc
UNUSED_PARAM
, char **argv)
{
const char *device = "eth0";
char *source = NULL;
{
const char *device = "eth0";
char *source = NULL;
@@
-264,16
+264,14
@@
int arping_main(int argc, char **argv)
err_str = xasprintf("interface %s %%s", device);
{
unsigned opt;
err_str = xasprintf("interface %s %%s", device);
{
unsigned opt;
- char *str_
count, *str_
timeout;
+ char *str_timeout;
/* Dad also sets quit_on_reply.
* Advert also sets unsolicited.
*/
/* Dad also sets quit_on_reply.
* Advert also sets unsolicited.
*/
- opt_complementary = "=1:Df:AU";
+ opt_complementary = "=1:Df:AU
:c+
";
opt = getopt32(argv, "DUAqfbc:w:I:s:",
opt = getopt32(argv, "DUAqfbc:w:I:s:",
- &str_count, &str_timeout, &device, &source);
- if (opt & 0x40) /* -c: count */
- count = xatoi_u(str_count);
+ &count, &str_timeout, &device, &source);
if (opt & 0x80) /* -w: timeout */
timeout_us = xatou_range(str_timeout, 0, INT_MAX/2000000) * 1000000 + 500000;
//if (opt & 0x200) /* -s: source */
if (opt & 0x80) /* -w: timeout */
timeout_us = xatou_range(str_timeout, 0, INT_MAX/2000000) * 1000000 + 500000;
//if (opt & 0x200) /* -s: source */