Exemple #1
0
int main(int argc, char *argv[])
{
	char *dev = NULL;			/* capture device name */
	char dmac[ETHER_LEN]={0},smac[ETHER_LEN]={0};
	char sip[IP_ALEN]={0},dip[IP_ALEN]={0};
	/* check for capture device name on command-line */
	if (argc == 6) {
		unsigned char packet[LEN];
		dev = argv[1];
		translate_mac(argv[2],smac);
		resolve(argv[3],sip);
		translate_mac(argv[4],dmac);
		resolve(argv[5],dip);
		build(dev,smac,sip,dmac,dip,packet);
		
		
		send_packet(dev,packet);		
		
	}
	else 
	{
		printf("Usage: $CMD <interface> <src_MAC> <src_IP> <dst_MAC> <dst_IP> \n");
	}
	return 0;
}
Exemple #2
0
int translate(char *mesh_iface, int argc, char **argv)
{
	struct ether_addr *dst_mac = NULL;
	struct bat_host *bat_host;
	int ret = EXIT_FAILURE;
	char *dst_string, *mac_string;

	if (argc <= 1) {
		fprintf(stderr, "Error - destination not specified\n");
		translate_usage();
		return EXIT_FAILURE;
	}

	dst_string = argv[1];
	bat_hosts_init(0);
	bat_host = bat_hosts_find_by_name(dst_string);

	if (bat_host)
		dst_mac = &bat_host->mac_addr;

	if (!dst_mac) {
		dst_mac = resolve_mac(dst_string);

		if (!dst_mac) {
			fprintf(stderr, "Error - mac address of the ping destination could not be resolved and is not a bat-host name: %s\n", dst_string);
			goto out;
		}
	}

	dst_mac = translate_mac(mesh_iface, dst_mac);
	if (dst_mac) {
		mac_string = ether_ntoa_long(dst_mac);
		printf("%s\n", mac_string);
		ret = EXIT_SUCCESS;
	} else {
		ret = EXIT_NOSUCCESS;
	}

out:
	bat_hosts_free();
	return ret;
}