Esempio n. 1
0
static int __init skraw_init(void)
{
	int err;
	/* register proto: dummy proto */
	err = proto_register(&raw_proto, 0);
	if (err) {
		dbg("Register proto err");
		return -1;
	}

	/* register socket */
	PF_RAW = raw_family_ops.family = get_family();
	raw_ops.family = PF_RAW;
	if (raw_family_ops.family == -1) {
		proto_unregister(&raw_proto);
		dbg("No empty family can be used!");
		return -1;
	}

	err = sock_register(&raw_family_ops);
	if (err) {
		proto_unregister(&raw_proto);
		dbg("Register socket err");
		return -1;
	}

	/* usermode code: socket(PF_RAW, .., ..) */
	printk(KERN_ALERT "register socket family: %d\n", PF_RAW);
	return 0;
}
Esempio n. 2
0
uint16_t
id_table::get_port(uint16_t id)
{
    uint8_t f = get_family(id);
    struct sockaddr_storage* ss = get_sockaddr(id);
    if (f == AF_INET) {
        return ((struct sockaddr_in*)ss)->sin_port;
    } else if (f == AF_INET6){
        return ((struct sockaddr_in6*)ss)->sin6_port;
    } else {
        return 0;
    }
}
Esempio n. 3
0
struct in6_addr*
id_table::get_addr6(uint16_t id)
{
    uint8_t f = get_family(id);
    if (f != AF_INET6) {
        return NULL;
    }
    struct sockaddr_storage* ss = get_sockaddr(id);
    if (ss != NULL) {
        return &(((struct sockaddr_in6*)ss)->sin6_addr);
    } else {
        return NULL;
    }
}
Esempio n. 4
0
// #define addrfmt(x, s) x.fmt(s, sizeof(s))
cstr PackedSockAddr::fmt(str s, size_t len) const
{
	memset(s, 0, len);
	const byte family = get_family();
	str i;
	if (family == AF_INET) {
		INET_NTOP(family, (uint32*)&_sin4, s, len);
		i = s;
		while (*++i) {}
	} else {
		i = s;
		*i++ = '[';
		INET_NTOP(family, (in6_addr*)&_in._in6addr, i, len-1);
		while (*++i) {}
		*i++ = ']';
	}
	snprintf(i, len - (i-s), ":%u", _port);
	return s;
}
Esempio n. 5
0
std::vector<std::string> TroopResult::get_gained_specials()
{
    std::vector<std::string> result;
    
    int family = get_family();
    
    Sint32 test1 = get_level() - 1;
    if ( !(test1%3) ) // we're on a special-gaining level
    {
        test1 = (test1 / 3) + 1; // this is the special #
        if ( (test1 <= 4) // raise this when we have more than 4 specials
                && (strcmp(myscreen->special_name[family][test1], "NONE") ))
        {
            result.push_back(myscreen->special_name[family][test1]);
        }
    }
    
    return result;
}
Esempio n. 6
0
SOCKADDR_STORAGE PackedSockAddr::get_sockaddr_storage(socklen_t *len = NULL) const
{
	SOCKADDR_STORAGE sa;
	const byte family = get_family();
	if (family == AF_INET) {
		sockaddr_in *sin = (sockaddr_in*)&sa;
		if (len) *len = sizeof(sockaddr_in);
		memset(sin, 0, sizeof(sockaddr_in));
		sin->sin_family = family;
		sin->sin_port = htons(_port);
		sin->sin_addr.s_addr = _sin4;
	} else {
		sockaddr_in6 *sin6 = (sockaddr_in6*)&sa;
		memset(sin6, 0, sizeof(sockaddr_in6));
		if (len) *len = sizeof(sockaddr_in6);
		sin6->sin6_family = family;
		sin6->sin6_addr = _in._in6addr;
		sin6->sin6_port = htons(_port);
	}
	return sa;
}
Esempio n. 7
0
/* Print some debugging info */
void
SgAsmGenericFormat::dump(FILE *f, const char *prefix, ssize_t idx) const
{
    char p[4096];
    if (idx>=0) {
        snprintf(p, sizeof(p),"%sFormat[%zd].", prefix, idx);
    } else {
        snprintf(p, sizeof(p),"%sFormat.", prefix);
    }
    const int w = std::max(1, DUMP_FIELD_WIDTH-(int)strlen(p));
    
    fprintf(f, "%s%-*s = %s\n", p, w, "family", to_string(get_family()).c_str());
    fprintf(f, "%s%-*s = %s\n", p, w, "purpose", to_string(get_purpose()).c_str());
    fprintf(f, "%s%-*s = %s\n", p, w, "sex", to_string(get_sex()).c_str());

    fprintf(f, "%s%-*s = %u (%scurrent)\n", p, w, "version", get_version(), get_is_current_version() ? "" : "not-" );
    
    fprintf(f, "%s%-*s = %s\n",  p, w, "ABI",      to_string(get_abi()).c_str());
    fprintf(f, "%s%-*s = %u\n",  p, w, "ABIvers",  get_abi_version());
    fprintf(f, "%s%-*s = %zu\n", p, w, "wordsize", get_word_size());
}
Esempio n. 8
0
File: msg.c Progetto: dtaht/tc-adv
struct nlmsghdr *msg_init(char *buf, int cmd)
{
	int family;
	struct nlmsghdr *nlh;
	struct genlmsghdr *genl;

	family = get_family();
	if (family <= 0) {
		fprintf(stderr,
			"Unable to get TIPC nl family id (module loaded?)\n");
		return NULL;
	}

	nlh = mnl_nlmsg_put_header(buf);
	nlh->nlmsg_type	= family;

	genl = mnl_nlmsg_put_extra_header(nlh, sizeof(struct genlmsghdr));
	genl->cmd = cmd;
	genl->version = 1;

	return nlh;
}
Esempio n. 9
0
SocketAddress::SocketAddress(const SocketAddress& other, uint16_t port) {
  memcpy_s(&addr, sizeof(addr), &other.addr, sizeof(other.addr));

  switch (get_family()) {
  case AF_INET: {
    reinterpret_cast<sockaddr_in*>(&addr)->sin_port = htons(port);
  }
  break;

  case AF_INET6: {
    reinterpret_cast<sockaddr_in6*>(&addr)->sin6_port = htons(port);
  }
  break;

  default:
    debug_break();
  }

  if (other.next_socket_address != NULL) {
    next_socket_address = new SocketAddress(*other.next_socket_address, port);
  } else {
    next_socket_address = NULL;
  }
}
    bool filesystem_specific_attribute::is_same_type_as(const filesystem_specific_attribute & ref) const
    {
	return get_family() == ref.get_family()
	    && get_nature() == ref.get_nature();
    }
Esempio n. 11
0
std::string	ipv6_address::get_ip_string() const
{
	char ip[INET6_ADDRSTRLEN] = { 0, };
	::inet_ntop(get_family(), const_cast<in6_addr*>(&sock_addr_.sin6_addr), ip, sizeof(ip));
	return ip;
}