Example #1
0
void show_eth_header(struct ethhdr *ethhdr)
{
	char buff[20];

	memset(buff, 0, sizeof(buff));

	pr_green_info("Ethhdr Header");
	pr_std_info("dest_mac = %s",
				mac_address_tostring((const char *)ethhdr->h_dest,
									 sizeof(ethhdr->h_dest),
									 (const char *)buff));
	pr_std_info("src_mac = %s",
				mac_address_tostring((const char *)ethhdr->h_source,
									 sizeof(ethhdr->h_source),
									 (const char *)buff));
	pr_std_info("protocol_type = %x", ntohs(ethhdr->h_proto));
	pr_std_info("");
}
Example #2
0
int unpack(const char *pkg_name, const char *dir_name)
{
	int ret;
	int pkg_fd;
	int img_fd;
	struct swan_file_info file_info;
	struct swan_package_info pkg_info;
	struct swan_image_info img_info;
	char tmp_path[1024];

	pr_std_info("unpack upgrade file \"%s\" -> \"%s\"", pkg_name, dir_name);

	ret = swan_check_md5sum(pkg_name);
	if (ret < 0) {
		pr_err_info("swan_check_md5sum");
		return ret;
	}

	pkg_fd = open(pkg_name, O_RDONLY | O_BINARY);
	if (pkg_fd < 0) {
		pr_err_info("open file \"%s\"", pkg_name);
		return -1;
	}

	ret = cavan_mkdir(dir_name);
	if (ret < 0) {
		pr_err_info("cavan_mkdir");
		goto out_close_pkg;
	}

	text_path_cat(tmp_path, sizeof(tmp_path), dir_name, HEADER_BIN_NAME);
	ret = read_upgrade_program(pkg_fd, &file_info, tmp_path);
	if (ret < 0) {
		pr_err_info("get_upgrade_program");
		goto out_close_pkg;
	}

	ret = read_resource_image(pkg_fd, &pkg_info, dir_name, 0, 0);
	if (ret < 0) {
		pr_err_info("get_resource_image");
		goto out_close_pkg;
	}

	while (pkg_info.image_count) {
		ret = read_image_info(pkg_fd, &img_info);
		if (ret < 0) {
			pr_err_info("read_image_info");
			goto out_close_pkg;
		}

		text_path_cat(tmp_path, sizeof(tmp_path), dir_name, img_info.filename);
		img_fd = open(tmp_path, O_WRONLY | O_CREAT | O_SYNC | O_TRUNC | O_BINARY, 0777);
		if (img_fd < 0) {
			pr_err_info("open");
			goto out_close_pkg;
		}

		ret = read_simple_image(pkg_fd, img_fd, img_info.length, 0);
		if (ret < 0) {
			pr_err_info("get_image");
			goto out_close_img;
		}

		close(img_fd);
		pkg_info.image_count--;
	}

	println_green("Decompression upgrade package \"%s\" to \"%s\" is ok", pkg_name, dir_name);

	ret = 0;
	goto out_close_pkg;

out_close_img:
	close(img_fd);
out_close_pkg:
	close(pkg_fd);

	if (ret < 0) {
		rmdir(dir_name);
	}

	return ret;
}