MES3.0はLinuxの下位互換性であり、MES3.0のユーザープログラムは原則としてLinuxでも同じソースコードで動作します。
以下、MES3.0で動作確認されたLinuxとソースコード互換のARPテーブル取得の例です。

#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/types.h>
#include <sys/socket.h>
#include <sys/ioctl.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <net/if.h>
#include <net/if_arp.h>

int main(int argc, char *argv[]) {
	int		s, ret;
	struct arpreq	arpreq;
	struct sockaddr_in *sin;
	unsigned char	*eap;

	if (argc < 2) return -1;

	memset(&arpreq, 0, sizeof(arpreq));
	sin = (struct sockaddr_in *) &arpreq.arp_pa;
	sin->sin_family = AF_INET;
	sin->sin_addr.s_addr = inet_addr(argv[1]);
	strncpy(arpreq.arp_dev, "ne0", 15);

	s = socket(AF_INET, SOCK_DGRAM, 0);
	if (s < 0) {
		printf("socket not found!!\n");
		return -1;
	}
	if (ioctl(s, SIOCGARP, &arpreq) < 0) {
		printf("ioctl error!!\n");
		return -1;
	}
	printf("IP address:\t\t%s\n", inet_ntoa(sin->sin_addr));

	if (arpreq.arp_flags & ATF_COM) {
		eap = (unsigned char *) &arpreq.arp_ha.sa_data[0];
		printf("Ethernet address:\t%02X:%02X:%02X:%02X:%02X:%02X\n",
				eap[0], eap[1], eap[2], eap[3], eap[4], eap[5]);
	} else {
		printf("*** INCOMPLETE ***\n");
	}
	close(s);
	
	return 0;
}