static void do_tcp_server_start(void) { int result; tuvp_tcp_init(); ip4_addr("0.0.0.0", tuvp_htons(SOCKET_TEST_PORT), &_addr_in); _sock_server = tuvp_socket(AF_INET, SOCK_STREAM, 0); result = tuvp_bind(_sock_server, (const struct sockaddr*)&_addr_in, sizeof(_addr_in)); if (result != 0) { printf("!! tuvp_bind failed (%d)\r\n", result); return; } result = tuvp_listen(_sock_server, SOMAXCONN); if (result != 0) { printf("!! tuvp_listen failed (%d)\r\n", result); return; } printf(".. echo server started at "); dump_socket_info(_sock_server); printf("\r\n"); printf(".. use 'telnet' to test, manually\r\n"); }
bool ip_union::is_rfc1918() const { if(is_ip4map6()) { uint32_t ip4 = ip4_addr(); if((ip4 & htonl(0xff000000)) == htonl(0x0a000000)) // 10.0.0.0/8 return true; if((ip4 & htonl(0xfff00000)) == htonl(0xac100000)) // 172.16.0.0/12 return true; if((ip4 & htonl(0xffff0000)) == htonl(0xc0a80000)) // 192.168.0.0/16 return true; } return false; }
int ip4_netmask(char *addr) { char* slash; slash = strchr(addr, '/'); if (slash) { return atoi(slash + 1); } else { switch ((ip4_addr(addr) & 192)) { case 0: case 1: return 8; case 128: return 16; default: return 24; } } }
bool ip_union::is_link_local() const { if((ip4_mapped[0] & htonl(0xFFC00000)) == htonl(0xFE800000)) // IPv6 link local return true; return is_ip4map6() && ((ip4_addr() & htonl(0xFFFF0000)) == htonl(0xA9FE0000)); // IPv4 link local }