MCPcopy Create free account
hub / github.com/F-Stack/f-stack / GetSocket

Function GetSocket

freebsd/netinet/libalias/alias_db.c:664–706  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

662
663#ifndef NO_USE_SOCKETS
664static u_short
665GetSocket(struct libalias *la, u_short port_net, int *sockfd, int link_type)
666{
667 int err;
668 int sock;
669 struct sockaddr_in sock_addr;
670
671 LIBALIAS_LOCK_ASSERT(la);
672 if (link_type == LINK_TCP)
673 sock = socket(AF_INET, SOCK_STREAM, 0);
674 else if (link_type == LINK_UDP)
675 sock = socket(AF_INET, SOCK_DGRAM, 0);
676 else {
677#ifdef LIBALIAS_DEBUG
678 fprintf(stderr, "PacketAlias/GetSocket(): ");
679 fprintf(stderr, "incorrect link type\n");
680#endif
681 return (0);
682 }
683
684 if (sock < 0) {
685#ifdef LIBALIAS_DEBUG
686 fprintf(stderr, "PacketAlias/GetSocket(): ");
687 fprintf(stderr, "socket() error %d\n", *sockfd);
688#endif
689 return (0);
690 }
691 sock_addr.sin_family = AF_INET;
692 sock_addr.sin_addr.s_addr = htonl(INADDR_ANY);
693 sock_addr.sin_port = port_net;
694
695 err = bind(sock,
696 (struct sockaddr *)&sock_addr,
697 sizeof(sock_addr));
698 if (err == 0) {
699 la->sockCount++;
700 *sockfd = sock;
701 return (1);
702 } else {
703 close(sock);
704 return (0);
705 }
706}
707#endif
708
709/* FindNewPortGroup() returns a base port number for an available

Callers 1

GetNewPortFunction · 0.85

Calls 3

socketClass · 0.50
bindFunction · 0.50
closeFunction · 0.50

Tested by

no test coverage detected