コード例 #1
0
ファイル: pcaptest.c プロジェクト: cakturk/netsniff
int main(int argc, char **argv)
{
	char *devname;
	char ebuf[PCAP_ERRBUF_SIZE];
	char llstr[6 * 3];
	const u_char *pload;
	pcap_t *dev;
	struct pcap_pkthdr hdr;
	struct ethhdr *machdr;
#if 0
	printf("%zu\n", sizeof(*machdr));
	return 0;
#endif
	int c = get_program_options(argc, argv, NULL);
	printf("get_program_options: %d\n", c);
	return 0;

	devname = pcap_lookupdev(ebuf);
	printf("errbuf: %s: %s\n", ebuf, devname);

	dev = pcap_open_live("enp0s25", PCAP_ERRBUF_SIZE, 1, 2000, ebuf);
	printf("dev: %p\n", dev);

	pload = pcap_next(dev, &hdr);
	ebuf[PCAP_ERRBUF_SIZE - 1] = '\0';
	printf("ploadptr: %p, hdrlen: %u\n", pload, hdr.len);

	machdr = eth_hdr(pload);
	printf("mac header: src: %s\n", mac_str(machdr->src, llstr));
	printf("mac header: dst: %s\n", mac_str(machdr->dst, llstr));

	return 0;
}
コード例 #2
0
ファイル: analyze.c プロジェクト: duli2888/company_testwork
static void print_mac(char *buf, mac_addr *e)
{
	ASSERT_NOT_NULL(buf);
	ASSERT_NOT_NULL(e);

	snprintf(buf, macbuf_size, mac_fmt, mac_str(e->a));
}
コード例 #3
0
ファイル: nc-config.c プロジェクト: mopsfelder/petitboot
static int screen_process_form(struct config_screen *screen)
{
	const struct system_info *sysinfo = screen->cui->sysinfo;
	enum net_conf_type net_conf_type;
	struct interface_config *iface;
	bool allow_write, autoboot;
	char *str, *end;
	struct config *config;
	int i, n_boot_opts, rc, idx;
	unsigned int *order;
	char mac[20];

	config = config_copy(screen, screen->cui->config);

	talloc_free(config->autoboot_opts);
	config->n_autoboot_opts = 0;

	n_boot_opts = widget_subset_get_order(config, &order,
					      screen->widgets.boot_order_f);

	autoboot = widget_select_get_value(screen->widgets.autoboot_f);
	config->autoboot_enabled = autoboot && n_boot_opts;

	config->n_autoboot_opts = n_boot_opts;
	config->autoboot_opts = talloc_array(config, struct autoboot_option,
					     n_boot_opts);

	for (i = 0; i < n_boot_opts; i++) {
		if (order[i] < sysinfo->n_blockdevs) {
			/* disk uuid */
			config->autoboot_opts[i].boot_type = BOOT_DEVICE_UUID;
			config->autoboot_opts[i].uuid = talloc_strdup(config,
							sysinfo->blockdevs[order[i]]->uuid);
		} else if(order[i] < (sysinfo->n_blockdevs + sysinfo->n_interfaces)) {
			/* net uuid */
			order[i] -= sysinfo->n_blockdevs;
			config->autoboot_opts[i].boot_type = BOOT_DEVICE_UUID;
			mac_str(sysinfo->interfaces[order[i]]->hwaddr,
				sysinfo->interfaces[order[i]]->hwaddr_size,
				mac, sizeof(mac));
			config->autoboot_opts[i].uuid = talloc_strdup(config, mac);
		} else {
			/* device type */
			order[i] -= (sysinfo->n_blockdevs + sysinfo->n_interfaces);
			config->autoboot_opts[i].boot_type = BOOT_DEVICE_TYPE;
			config->autoboot_opts[i].type = order[i];
		}
	}

	str = widget_textbox_get_value(screen->widgets.timeout_f);
	if (str) {
		unsigned long x;
		errno = 0;
		x = strtoul(str, &end, 10);
		if (!errno && end != str)
			config->autoboot_timeout_sec = x;
	}

	if (screen->ipmi_override)
		if (widget_checkbox_get_value(screen->widgets.ipmi_clear_cb))
			config->ipmi_bootdev = IPMI_BOOTDEV_INVALID;


	net_conf_type = widget_select_get_value(screen->widgets.network_f);

	/* if we don't have any network interfaces, prevent per-interface
	 * configuration */
	if (sysinfo->n_interfaces == 0)
		net_conf_type = NET_CONF_TYPE_DHCP_ALL;

	if (net_conf_type == NET_CONF_TYPE_DHCP_ALL) {
		config->network.n_interfaces = 0;

	} else {
		iface = talloc_zero(config, struct interface_config);
		config->network.n_interfaces = 1;
		config->network.interfaces = talloc_array(config,
				struct interface_config *, 1);
		config->network.interfaces[0] = iface;

		/* copy hwaddr (from the sysinfo interface data) to
		 * the configuration */
		idx = widget_select_get_value(screen->widgets.iface_f);
		memcpy(iface->hwaddr, sysinfo->interfaces[idx]->hwaddr,
				sizeof(iface->hwaddr));
	}

	if (net_conf_type == NET_CONF_TYPE_DHCP_ONE) {
		iface->method = CONFIG_METHOD_DHCP;
	}

	if (net_conf_type == NET_CONF_TYPE_STATIC) {
		char *ip, *mask, *gateway, *url;

		ip = widget_textbox_get_value(screen->widgets.ip_addr_f);
		mask = widget_textbox_get_value(screen->widgets.ip_mask_f);
		gateway = widget_textbox_get_value(screen->widgets.gateway_f);
		url = widget_textbox_get_value(screen->widgets.url_f);

		if (!ip || !*ip || !mask || !*mask) {
			screen->scr.frame.status =
				_("No IP / mask values are set");
			nc_scr_frame_draw(&screen->scr);
			talloc_free(config);
			return -1;
		}

		iface->method = CONFIG_METHOD_STATIC;
		iface->static_config.address = talloc_asprintf(iface, "%s/%s",
				ip, mask);
		iface->static_config.gateway = talloc_strdup(iface, gateway);
		iface->static_config.url = talloc_strdup(iface, url);
	}

	str = widget_textbox_get_value(screen->widgets.dns_f);
	talloc_free(config->network.dns_servers);
	config->network.dns_servers = NULL;
	config->network.n_dns_servers = 0;

	if (str && strlen(str)) {
		char *dns, *tmp;
		int i;

		for (;;) {
			dns = strtok_r(str, " \t", &tmp);

			if (!dns)
				break;

			i = config->network.n_dns_servers++;
			config->network.dns_servers = talloc_realloc(config,
					config->network.dns_servers,
					const char *,
					config->network.n_dns_servers);
			config->network.dns_servers[i] =
				talloc_strdup(config, dns);

			str = NULL;
		}
	}