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; }
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; } }
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; } }
// #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; }
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; }
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; }
/* 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()); }
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; }
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(); }
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; }