コード例 #1
0
ファイル: socket.c プロジェクト: quickgold192/oslab1
int socket(int domain, int type, int protocol)
{
#if DEBUG
    fprintf(stderr, "socket: domain %d, type %d, protocol %d\n",
            domain, type, protocol);
#endif
    if (domain != AF_INET)
    {
#if DEBUG
        fprintf(stderr, "socket: bad domain %d\n", domain);
#endif
        errno= EAFNOSUPPORT;
        return -1;
    }
    if (type == SOCK_STREAM)
        return _tcp_socket(protocol);

    if (type == SOCK_DGRAM)
        return _udp_socket(protocol);

#if DEBUG
    fprintf(stderr, "socket: nothing for domain %d, type %d, protocol %d\n",
            domain, type, protocol);
#endif
    errno= EPROTOTYPE;
    return -1;
}
コード例 #2
0
ファイル: udp.hpp プロジェクト: umegaya/cyue
DSCRPTR udp_socket(const char *addr,void *cfg) {
	SKCONF *skcfg = reinterpret_cast<SKCONF *>(cfg);
	object *pcfg = reinterpret_cast<object *>(skcfg->proto_p);
	UDPCONF conf;
	if (pcfg) {
		conf.ttl = (*pcfg)("ttl", 1);
		conf.ifname = (*pcfg)("ifname", (char *)NULL);
		conf.mcast_addr = const_cast<char *>((*pcfg)("group", "239.192.1.2"));
		skcfg->proto_p = &conf;
	}
	DSCRPTR fd = _udp_socket(addr, skcfg);
	return fd;
}
コード例 #3
0
int socket(int domain, int type, int protocol)
{
	int sock_type;

	sock_type = type & ~SOCK_FLAGS_MASK;

#if DEBUG
	fprintf(stderr, "socket: domain %d, type %d, protocol %d\n",
		domain, type, protocol);
#endif
	if (domain != AF_INET && domain != AF_UNIX)
	{
#if DEBUG
		fprintf(stderr, "socket: bad domain %d\n", domain);
#endif
		errno= EAFNOSUPPORT;
		return -1;
	}

	if (domain == AF_UNIX && (sock_type == SOCK_STREAM ||
				  sock_type == SOCK_DGRAM ||
				  sock_type == SOCK_SEQPACKET))
		return _uds_socket(type, protocol);

	if (domain == AF_INET && sock_type == SOCK_STREAM)
		return _tcp_socket(type, protocol);

	if (domain == AF_INET && sock_type == SOCK_DGRAM)
		return _udp_socket(type, protocol);

	if (domain == AF_INET && sock_type == SOCK_RAW && protocol == IPPROTO_ICMP)
		return _raw_socket(type, protocol);

	if (domain == AF_INET && sock_type == SOCK_RAW && protocol == IPPROTO_UDP)
		return _raw_socket(type, protocol);

#if DEBUG
	fprintf(stderr, "socket: nothing for domain %d, type %d, protocol %d\n",
		domain, type, protocol);
#endif
	errno= EPROTOTYPE;
	return -1;
}