X-Git-Url: https://git.netwichtig.de/gitweb/?a=blobdiff_plain;f=src%2Fsocket.cpp;h=0509f4bf35e224025b01b9973fc09a093d80457b;hb=76ebc88ccd6fef0bf2d97b607829fb3466e273af;hp=58e2c5bad12e3e69b474fa294e4c6d7880514a81;hpb=0f61489ddb2f54d62c6a59e169901e4a17098230;p=user%2Fhenk%2Fcode%2Finspircd.git diff --git a/src/socket.cpp b/src/socket.cpp index 58e2c5bad..0509f4bf3 100644 --- a/src/socket.cpp +++ b/src/socket.cpp @@ -22,11 +22,9 @@ #include "helperfuncs.h" #include "socketengine.h" #include "wildcard.h" -#include "message.h" -extern InspIRCd* ServerInstance; -extern ServerConfig* Config; -extern time_t TIME; +using namespace std; +using namespace irc::sockets; /* Used when comparing CIDR masks for the modulus bits left over. * A lot of ircd's seem to do this: @@ -44,7 +42,7 @@ const char inverted_bits[8] = { 0x00, /* 00000000 - 0 bits - never actually used }; /* Match raw bytes using CIDR bit matching, used by higher level MatchCIDR() */ -bool MatchCIDRBits(unsigned char* address, unsigned char* mask, unsigned int mask_bits) +bool irc::sockets::MatchCIDRBits(unsigned char* address, unsigned char* mask, unsigned int mask_bits) { unsigned int modulus = mask_bits % 8; /* Number of whole bytes in the mask */ unsigned int divisor = mask_bits / 8; /* Remaining bits in the mask after whole bytes are dealt with */ @@ -64,7 +62,7 @@ bool MatchCIDRBits(unsigned char* address, unsigned char* mask, unsigned int mas } /* Match CIDR, but dont attempt to match() against leading *!*@ sections */ -bool MatchCIDR(const char* address, const char* cidr_mask) +bool irc::sockets::MatchCIDR(const char* address, const char* cidr_mask) { return MatchCIDR(address, cidr_mask, false); } @@ -76,7 +74,7 @@ bool MatchCIDR(const char* address, const char* cidr_mask) * This will also attempt to match any leading usernames or nicknames on the mask, using * match(), when match_with_username is true. */ -bool MatchCIDR(const char* address, const char* cidr_mask, bool match_with_username) +bool irc::sockets::MatchCIDR(const char* address, const char* cidr_mask, bool match_with_username) { unsigned char addr_raw[16]; unsigned char mask_raw[16]; @@ -209,13 +207,13 @@ bool MatchCIDR(const char* address, const char* cidr_mask, bool match_with_usern return MatchCIDRBits(addr_raw, mask_raw, bits); } -inline void Blocking(int s) +inline void irc::sockets::Blocking(int s) { int flags = fcntl(s, F_GETFL, 0); fcntl(s, F_SETFL, flags ^ O_NONBLOCK); } -inline void NonBlocking(int s) +inline void irc::sockets::NonBlocking(int s) { int flags = fcntl(s, F_GETFL, 0); fcntl(s, F_SETFL, flags | O_NONBLOCK); @@ -226,7 +224,7 @@ inline void NonBlocking(int s) * It can only bind to IP addresses, if you wish to bind to hostnames * you should first resolve them using class 'Resolver'. */ -bool BindSocket(int sockfd, insp_sockaddr client, insp_sockaddr server, int port, char* addr) +bool InspIRCd::BindSocket(int sockfd, insp_sockaddr client, insp_sockaddr server, int port, char* addr) { memset(&server,0,sizeof(server)); insp_inaddr addy; @@ -288,7 +286,7 @@ bool BindSocket(int sockfd, insp_sockaddr client, insp_sockaddr server, int port // Open a TCP Socket -int OpenTCPSocket() +int irc::sockets::OpenTCPSocket() { int sockfd; int on = 1; @@ -310,9 +308,10 @@ int OpenTCPSocket() } } -bool HasPort(int port, char* addr) +/* XXX: Probably belongs in class InspIRCd */ +bool InspIRCd::HasPort(int port, char* addr) { - for (unsigned long count = 0; count < ServerInstance->stats->BoundPortCount; count++) + for (unsigned long count = 0; count < stats->BoundPortCount; count++) { if ((port == Config->ports[count]) && (!strcasecmp(Config->addrs[count],addr))) { @@ -322,7 +321,8 @@ bool HasPort(int port, char* addr) return false; } -int BindPorts(bool bail) +/* XXX: Probably belongs in class InspIRCd */ +int InspIRCd::BindPorts(bool bail) { char configToken[MAXBUF], Addr[MAXBUF], Type[MAXBUF]; insp_sockaddr client, server; @@ -331,7 +331,7 @@ int BindPorts(bool bail) if (!bail) { - int InitialPortCount = ServerInstance->stats->BoundPortCount; + int InitialPortCount = stats->BoundPortCount; log(DEBUG,"Initial port count: %d",InitialPortCount); for (int count = 0; count < Config->ConfValueEnum(Config->config_data, "bind"); count++) @@ -372,7 +372,7 @@ int BindPorts(bool bail) /* Associate the new open port with a slot in the socket engine */ if (Config->openSockfd[count] > -1) { - if (!ServerInstance->SE->AddFd(Config->openSockfd[count],true,X_LISTEN)) + if (!SE->AddFd(Config->openSockfd[count],true,X_LISTEN)) { log(DEFAULT,"ERK! Failed to add listening port to socket engine!"); shutdown(Config->openSockfd[count],2); @@ -441,14 +441,14 @@ int BindPorts(bool bail) return BoundPortCount; } -const char* insp_ntoa(insp_inaddr n) +const char* irc::sockets::insp_ntoa(insp_inaddr n) { static char buf[1024]; inet_ntop(AF_FAMILY, &n, buf, sizeof(buf)); return buf; } -int insp_aton(const char* a, insp_inaddr* n) +int irc::sockets::insp_aton(const char* a, insp_inaddr* n) { return inet_pton(AF_FAMILY, a, n); }