Hi,

I'm writing a program which receives ARP packets and have noticed that
broadcast ARP packets seem to come in with the destination hardware
address set as all zeros.

Whereas tethereal indicates that the packet has a broadcast MAC address.

My code:

int arp_open(struct intf *intf)
{
  int as;
  struct sockaddr_ll ll;

  if ((as = socket(PF_PACKET, SOCK_DGRAM, htons(ETH_P_ARP))) < 0) {
    fprintf(stderr,"arp socket failed: %s\n", strerror(errno));
    return -1;
  }

  memset(&ll, 0, sizeof(ll));
  ll.sll_family = AF_PACKET;
  ll.sll_ifindex = intf->index;

  if (bind(as, (struct sockaddr *)&ll, sizeof(ll)) < 0) {
    fprintf(stderr,"arp bind failed: %s\n", strerror(errno));
    return -1;
  }

  return as;
}

it then polls the descriptor and does a recv if there is anything to be 
read .  What I get back from the kernel is, hex values seperates by '!'s

!00!01!08!00!06!04!00!01!00!10!B5!12!E1!F8!CB!07!E3!81!00!00!00!00!00!00!CB!07!E3!BA!00!00!00!00!00!00!00!00!00!00!00!00!00!00!00!00!00!00

which I translate into:

1 2048 6 4 1: 00:10:B5:12:E1:F8 203.7.227.129 -> 00:00:00:00:00:00 203.7.227.186

Is my code doing anything wrong? Should I expect broadcast to be 
represented as 00s? I tried looking into the kernel (2.6.15) but quickly 
got bogged down in net/packet/afpacket.c.

Thanks,
Anand


-
To unsubscribe from this list: send the line "unsubscribe netdev" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to