#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:
};
/* 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 */
}
/* 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);
}
* 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];
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);
* 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;
// Open a TCP Socket
-int OpenTCPSocket()
+int irc::sockets::OpenTCPSocket()
{
int sockfd;
int on = 1;
}
}
-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)))
{
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;
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++)
/* 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);
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);
}