static void afinet_set_port(GSockAddr *addr, gchar *service, const gchar *proto) { if (addr) { gchar *end; gint port; /* check if service is numeric */ port = strtol(service, &end, 10); if ((*end != 0)) { struct servent *se; /* service is not numeric, check if it's a service in /etc/services */ se = getservbyname(service, proto); if (se) { port = ntohs(se->s_port); } else { msg_error("Error finding port number, falling back to default", evt_tag_printf("service", "%s/%s", proto, service), NULL); return; } } switch (addr->sa.sa_family) { case AF_INET: g_sockaddr_inet_set_port(addr, port); break; #if ENABLE_IPV6 case AF_INET6: g_sockaddr_inet6_set_port(addr, port); break; #endif default: g_assert_not_reached(); break; } } }
static void afinet_set_port(GSockAddr *addr, gint port, gchar *service, gchar *proto) { if (addr) { if (proto) { struct servent *se; se = getservbyname(service, proto); if (se) { port = ntohs(se->s_port); } else { msg_error("Error finding port number, falling back to default", evt_tag_printf("service", "%s/%s", proto, service), NULL); return; } } switch (addr->sa.sa_family) { case AF_INET: g_sockaddr_inet_set_port(addr, port); break; #if ENABLE_IPV6 case AF_INET6: g_sockaddr_inet6_set_port(addr, port); break; #endif default: g_assert_not_reached(); break; } } }