Fixed in git, thanks!

On Wed, May 25, 2016 at 5:24 PM, Vito Mulè <[email protected]> wrote:
> friendly ping
>
> ---------- Forwarded message ----------
> From: Vito Mulè <[email protected]>
> Date: 16 May 2016 at 18:16
> Subject: Fwd: bug 8926 - Arping dropping leading 0 from mac address
> To: [email protected]
>
>
> Hello,
> not sure if this is necessary since I've opened the bug already, apologies
> in case it's not.
> Bug link: https://bugs.busybox.net/show_bug.cgi?id=8926
>
>
> Not sure if this is intende but busybox arping is not consistent with arping
> on linux, printing MAC addressed.
>
>
> root@agent4:/home/vmule# arping 192.168.1.159
> ARPING 192.168.1.159
> 60 bytes from 08:00:27:86:47:9d (192.168.1.159): index=0 time=1.002 sec
>
> and this is busybox arping
> root@agent4:/home/vmule# busybox arping 192.168.1.159
> ARPING to 192.168.1.159 from 192.168.1.157 via eth0
> Unicast reply from 192.168.1.159 [8:0:27:86:47:9d] 0.314ms
>
> I wrote a small patch to fix it:
>
>
> diff --git a/networking/arping.c b/networking/arping.c
> index 6b0de4d..2b22451 100644
> --- a/networking/arping.c
> +++ b/networking/arping.c
> @@ -230,12 +230,15 @@ static void recv_pack(unsigned char *buf, int len,
> struct sockaddr_ll *FROM)
>         }
>         if (!(option_mask32 & QUIET)) {
>                 int s_printed = 0;
> +               struct ether_addr* mac = (struct ether_addr *) p;
>
> -               printf("%scast re%s from %s [%s]",
> +               printf("%scast re%s from %s [%02x:%02x:%02x:%02x:%02x:%02x]
> ",
>                         FROM->sll_pkttype == PACKET_HOST ? "Uni" : "Broad",
>                         ah->ar_op == htons(ARPOP_REPLY) ? "ply" : "quest",
>                         inet_ntoa(src_ip),
> -                       ether_ntoa((struct ether_addr *) p));
> +                       mac->ether_addr_octet[0], mac->ether_addr_octet[1],
> +                       mac->ether_addr_octet[2], mac->ether_addr_octet[3],
> +                       mac->ether_addr_octet[4], mac->ether_addr_octet[5]);
>                 if (dst_ip.s_addr != src.s_addr) {
>                         printf("for %s ", inet_ntoa(dst_ip));
>                         s_printed = 1;
> @@ -243,8 +246,11 @@ static void recv_pack(unsigned char *buf, int len,
> struct sockaddr_ll *FROM)
>                 if (memcmp(p + ah->ar_hln + 4, me.sll_addr, ah->ar_hln)) {
>                         if (!s_printed)
>                                 printf("for ");
> -                       printf("[%s]",
> -                               ether_ntoa((struct ether_addr *) p +
> ah->ar_hln + 4));
> +                       struct ether_addr* mac2 = mac + ah->ar_hln + 4;
> +                       printf("[%02x:%02x:%02x:%02x:%02x:%02x]",
> +                               mac2->ether_addr_octet[0],
> mac2->ether_addr_octet[1],
> +                               mac2->ether_addr_octet[2],
> mac2->ether_addr_octet[3],
> +                               mac2->ether_addr_octet[4],
> mac2->ether_addr_octet[5]);
>                 }
>
>                 if (last) {
>
>
> Ideas?
>
>
> Cheers
>
>
>
>
> _______________________________________________
> busybox mailing list
> [email protected]
> http://lists.busybox.net/mailman/listinfo/busybox
_______________________________________________
busybox mailing list
[email protected]
http://lists.busybox.net/mailman/listinfo/busybox

Reply via email to