From owner-freebsd-hackers Thu Sep 28 2:43: 5 2000 Delivered-To: freebsd-hackers@freebsd.org Received: from roma.axis.se (roma.axis.se [193.13.178.2]) by hub.freebsd.org (Postfix) with ESMTP id 1247137B424 for ; Thu, 28 Sep 2000 02:43:00 -0700 (PDT) Received: from pctobiasa.axis.se (tobiasa@pctobiasa.axis.se [10.13.10.180]) by roma.axis.se (8.9.3/8.9.3) with ESMTP id LAA24407 for ; Thu, 28 Sep 2000 11:37:02 +0200 (MEST) Date: Thu, 28 Sep 2000 11:36:24 +0000 (/etc/localtime) From: Tobias Anderberg To: freebsd-hackers@FreeBSD.ORG Subject: FreeBSD Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Sender: owner-freebsd-hackers@FreeBSD.ORG Precedence: bulk X-Loop: FreeBSD.ORG Hi! (first time poster warning...) I'm porting an Linux application to FreeBSD, and I've stumbled across the dreaded SOCK_PACKET and SIOCGIFHWADDR. From what I understand, the FreeBSD equivaliant of SOCK_PACKET is to use BPF? Do I have to use that for the SIOCG.. call aswell? Any hints would be appreciated! /tobba The two functions in question: int InitSendSocket(char *device_name) { if ((sock_fd = socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL))) < 0) { perror("Socket call failed:"); exit(-1); } fcntl(sock_fd, F_SETFL, O_NDELAY); sock_addr.sa_family = AF_INET; strcpy(sock_addr.sa_data, device_name); return sock_fd; } void GetLocalEthAddr() { int fd; struct ifreq ifr; if ((fd = socket(AF_INET, SOCK_DGRAM, 0)) == -1) { perror("socket"); exit(1); } strcpy(ifr.ifr_name, device); if (ioctl(fd, SIOCGIFHWADDR, &ifr) < 0) { perror("ioctl"); exit(1); } memcpy(eth_addr_local, ifr.ifr_hwaddr.sa_data, 6); if (db1) printf("Ethernet adress for device %s is %2.2x-%2.2x-%2.2x-%2.2x-%2.2x-%2.2x\n", device, eth_addr_local[0], eth_addr_local[1], eth_addr_local[2], eth_addr_local[3], eth_addr_local[4], eth_addr_local[5]); shutdown(fd, 2); } To Unsubscribe: send mail to majordomo@FreeBSD.org with "unsubscribe freebsd-hackers" in the body of the message