コード例 #1
0
ファイル: dirops.c プロジェクト: lkl/lkl-lklftpd
static apr_status_t dir_cleanup(void *thedir)
{
	lkl_dir_t *dir = thedir;
	apr_status_t rc;

	rc = lkl_sys_close(dir->fd);
	return rc;
}
コード例 #2
0
ファイル: net.c プロジェクト: c444b774/linux
int lkl_netdev_get_ifindex(int id)
{
	struct lkl_ifreq ifr;
	int sock, ret;

	sock = lkl_sys_socket(LKL_AF_INET, LKL_SOCK_DGRAM, 0);
	if (sock < 0)
		return sock;

	snprintf(ifr.lkl_ifr_name, sizeof(ifr.lkl_ifr_name), "eth%d", id);
	ret = lkl_sys_ioctl(sock, LKL_SIOCGIFINDEX, (long)&ifr);
	lkl_sys_close(sock);

	return ret < 0 ? ret : ifr.lkl_ifr_ifindex;
}
コード例 #3
0
ファイル: net.c プロジェクト: c444b774/linux
int lkl_set_ipv4_gateway(unsigned int addr)
{
	struct lkl_rtentry re;
	int err, sock = lkl_sys_socket(LKL_AF_INET, LKL_SOCK_DGRAM, 0);

	if (sock < 0)
		return sock;

	memset(&re, 0, sizeof(re));
	set_sockaddr((struct lkl_sockaddr_in *) &re.rt_dst, 0, 0);
	set_sockaddr((struct lkl_sockaddr_in *) &re.rt_genmask, 0, 0);
	set_sockaddr((struct lkl_sockaddr_in *) &re.rt_gateway, addr, 0);
	re.rt_flags = LKL_RTF_UP | LKL_RTF_GATEWAY;
	err = lkl_sys_ioctl(sock, LKL_SIOCADDRT, (long)&re);
	lkl_sys_close(sock);

	return err;
}
コード例 #4
0
ファイル: wapr_fileops.c プロジェクト: lkl/lkl-lua
static apr_status_t file_cleanup(wapr_file_t *file)
{
	apr_status_t rv = APR_SUCCESS;
	int rc;

	rc =  lkl_sys_close(file->filedes);
	if (0 == rc)
	{
		file->filedes = -1;
		if (file->flags & APR_DELONCLOSE)
			lkl_sys_unlink(file->fname);
		if (file->thlock)
			rv = apr_thread_mutex_destroy(file->thlock);
	}
	else
		rv = -rc;

	return rv;
}
コード例 #5
0
ファイル: net.c プロジェクト: c444b774/linux
int lkl_if_set_mtu(int ifindex, int mtu)
{
	struct lkl_ifreq ifr;
	int err, sock;

	sock = lkl_sys_socket(LKL_AF_INET, LKL_SOCK_DGRAM, 0);
	if (sock < 0)
		return sock;

	err = ifindex_to_name(sock, &ifr, ifindex);
	if (err < 0)
		return err;

	ifr.lkl_ifr_mtu = mtu;

	err = lkl_sys_ioctl(sock, LKL_SIOCSIFMTU, (long)&ifr);

	lkl_sys_close(sock);

	return err;
}
コード例 #6
0
ファイル: net.c プロジェクト: c444b774/linux
int lkl_if_up(int ifindex)
{
	struct lkl_ifreq ifr;
	int err, sock = lkl_sys_socket(LKL_AF_INET, LKL_SOCK_DGRAM, 0);

	if (sock < 0)
		return sock;
	err = ifindex_to_name(sock, &ifr, ifindex);
	if (err < 0)
		return err;

	err = lkl_sys_ioctl(sock, LKL_SIOCGIFFLAGS, (long)&ifr);
	if (!err) {
		ifr.lkl_ifr_flags |= LKL_IFF_UP;
		err = lkl_sys_ioctl(sock, LKL_SIOCSIFFLAGS, (long)&ifr);
	}

	lkl_sys_close(sock);

	return err;
}
コード例 #7
0
ファイル: fsctl.c プロジェクト: lkl/lkl-win-fsd
static void test_list_files(char * path)
{
	int fd = lkl_sys_open(path, O_RDONLY|O_LARGEFILE|O_DIRECTORY, 0);
	if (fd >= 0) {
		char x[4096];
		int count, reclen;
		struct __kernel_dirent *de;

		count = lkl_sys_getdents(fd, (struct __kernel_dirent*) x, sizeof(x));
		ASSERT(count > 0);

		de=(struct __kernel_dirent*)x;
		while (count > 0) {
			reclen = de->d_reclen;
			DbgPrint("%s %ld\n", de->d_name, de->d_ino);
			de = (struct __kernel_dirent*) ((char*)de+reclen);
			count-=reclen;
		}

		lkl_sys_close(fd);
	}
}
コード例 #8
0
ファイル: net.c プロジェクト: c444b774/linux
int lkl_if_set_ipv4(int ifindex, unsigned int addr, unsigned int netmask_len)
{
	struct lkl_ifreq ifr;
	struct lkl_sockaddr_in *sin;
	int err, sock;


	sock = lkl_sys_socket(LKL_AF_INET, LKL_SOCK_DGRAM, 0);
	if (sock < 0)
		return sock;

	err = ifindex_to_name(sock, &ifr, ifindex);
	if (err < 0)
		return err;

	if (netmask_len >= 31)
		return -LKL_EINVAL;

	sin = (struct lkl_sockaddr_in *)&ifr.lkl_ifr_addr;
	set_sockaddr(sin, addr, 0);

	err = lkl_sys_ioctl(sock, LKL_SIOCSIFADDR, (long)&ifr);
	if (!err) {
		int netmask = (((1<<netmask_len)-1))<<(32-netmask_len);

		sin = (struct lkl_sockaddr_in *)&ifr.lkl_ifr_netmask;
		set_sockaddr(sin, htonl(netmask), 0);
		err = lkl_sys_ioctl(sock, LKL_SIOCSIFNETMASK, (long)&ifr);
		if (!err) {
			set_sockaddr(sin, htonl(ntohl(addr)|~netmask), 0);
			err = lkl_sys_ioctl(sock, LKL_SIOCSIFBRDADDR, (long)&ifr);
		}
	}

	lkl_sys_close(sock);

	return err;
}
コード例 #9
0
ファイル: lkl_decl.c プロジェクト: eaas-framework/lklsocks
long lkl_close(unsigned int fd) {
    return lkl_set_errno(lkl_sys_close(fd));
}