int myfd;
void dns_init_2(const char* dnsserver);
insp_inaddr *dns_aton4(const char * const ipstring);
- char *dns_ntoa4(const insp_inaddr * const ip);
int dns_getip4(const char * const name);
int dns_getip4list(const char * const name);
int dns_getname4(const insp_inaddr * const ip);
char *dns_getresult(const int fd);
insp_inaddr *dns_aton4_s(const char * const ipstring, insp_inaddr * const ip);
- char *dns_ntoa4_s(const insp_inaddr * const ip, char * const result);
char *dns_getresult_s(const int fd, char * const result);
insp_inaddr *dns_aton4_r(const char * const ipstring);
- char *dns_ntoa4_r(const insp_inaddr * const ip);
char *dns_getresult_r(const int fd);
public:
/** The default constructor uses dns addresses read from /etc/resolv.conf.
#endif
+const char* insp_ntoa(insp_inaddr n);
+int insp_aton(const char* a, insp_inaddr* n);
+
int OpenTCPSocket();
bool BindSocket(int sockfd, insp_sockaddr client, insp_sockaddr server, int port, char* addr);
int BindPorts(bool bail);
{
for (BanList::iterator i = Ptr->bans.begin(); i != Ptr->bans.end(); i++)
{
- if ((match(user->GetFullHost(),i->data)) || (match(user->GetFullRealHost(),i->data)) || (match((char*)inet_ntoa(user->ip4),i->data)))
+ if ((match(user->GetFullHost(),i->data)) || (match(user->GetFullRealHost(),i->data)) || (match((char*)insp_ntoa(user->ip4),i->data)))
{
WriteServ(user->fd,"474 %s %s :Cannot join channel (You're banned)",user->nick, Ptr->name);
return NULL;
WriteServ(user->fd,"311 %s %s %s %s * :%s",user->nick, dest->nick, dest->ident, dest->dhost, dest->fullname);
if ((user == dest) || (*user->oper))
{
- WriteServ(user->fd,"378 %s %s :is connecting from *@%s %s",user->nick, dest->nick, dest->host, inet_ntoa(dest->ip4));
+ WriteServ(user->fd,"378 %s %s :is connecting from *@%s %s",user->nick, dest->nick, dest->host, insp_ntoa(dest->ip4));
}
std::string cl = chlist(dest,user);
if (cl.length())
for (user_hash::iterator u = clientlist.begin(); u != clientlist.end(); u++)
{
- if (match((char*)inet_ntoa(u->second->ip4),ip.c_str()))
+ if (match(insp_ntoa(u->second->ip4),ip.c_str()))
matches++;
}
Resolver* dns_classes[MAX_DESCRIPTORS];
-insp_inaddr servers4[8];
+insp_inaddr servers[8];
int i4;
int initdone = 0;
int lastcreate = -1;
initdone = 1;
srand((unsigned int) TIME);
- memset(servers4,'\0',sizeof(insp_inaddr) * 8);
+ memset(servers,'\0',sizeof(insp_inaddr) * 8);
f = fopen("/etc/resolv.conf","r");
if (f == NULL)
return;
if (i4 < 8)
{
if (dns_aton4_s(&buf[i],&addr) != NULL)
- memcpy(&servers4[i4++],&addr,sizeof(insp_inaddr));
+ memcpy(&servers[i4++],&addr,sizeof(insp_inaddr));
}
}
}
insp_inaddr addr;
i4 = 0;
srand((unsigned int) TIME);
- memset(servers4,'\0',sizeof(insp_inaddr) * 8);
+ memset(servers,'\0',sizeof(insp_inaddr) * 8);
if (dns_aton4_s(dnsserver,&addr) != NULL)
- memcpy(&servers4[i4++],&addr,sizeof(insp_inaddr));
+ memcpy(&servers[i4++],&addr,sizeof(insp_inaddr));
}
/* otherwise send via standard ipv4 boringness */
memset(&addr,0,sizeof(addr));
- memcpy(&addr.sin_addr,&servers4[i],sizeof(addr.sin_addr));
+#ifdef IPV6
+ memcpy(&addr.sin6_addr,&servers[i],sizeof(addr.sin6_addr));
+ addr.sin6_family = AF_FAMILY;
+ addr.sin6_port = htons(53);
+#else
+ memcpy(&addr.sin_addr,&servers[i],sizeof(addr.sin_addr));
addr.sin_family = AF_FAMILY;
addr.sin_port = htons(53);
+#endif
if (sendto(s->fd, payload, l + 12, 0, (sockaddr *) &addr, sizeof(addr)) == -1)
{
return -1;
{
insp_sockaddr addr;
memset(&addr,0,sizeof(addr));
+#ifdef IPV6
+ addr.sin6_family = AF_FAMILY;
+ addr.sin6_port = 0;
+ memset(&addr.sin6_addr,255,sizeof(in6_addr));
+#else
addr.sin_family = AF_FAMILY;
addr.sin_port = 0;
addr.sin_addr.s_addr = INADDR_ANY;
+#endif
if (bind(s->fd,(sockaddr *)&addr,sizeof(addr)) != 0)
{
shutdown(s->fd,2);
}
insp_inaddr* DNS::dns_aton4_s(const char *ipstring, insp_inaddr *ip) { /* ascii to numeric (buffered): convert string to given 4part IP addr struct */
- inet_aton(ipstring,ip);
+ insp_aton(ipstring,ip);
return ip;
}
return s->fd;
}
-int DNS::dns_getname4(const insp_inaddr *ip) { /* build, add and send PTR query; retrieve result with dns_getresult() */
+int DNS::dns_getname4(const insp_inaddr *ip)
+{ /* build, add and send PTR query; retrieve result with dns_getresult() */
+#ifdef IPV6
+ return -1;
+#else
char query[512];
s_header h;
s_connection * s;
return -1;
return s->fd;
-}
-
-char* DNS::dns_ntoa4(const insp_inaddr * const ip) { /* numeric to ascii: convert 4part IP addr struct to static string */
- static char r[256];
- return dns_ntoa4_s(ip,r);
-}
-
-char* DNS::dns_ntoa4_s(const insp_inaddr *ip, char *r) { /* numeric to ascii (buffered): convert 4part IP addr struct to given string */
- unsigned char *m;
- m = (unsigned char *)&ip->s_addr;
- sprintf(r,"%d.%d.%d.%d",m[0],m[1],m[2],m[3]);
- return r;
+#endif
}
char* DNS::dns_getresult(const int cfd) { /* retrieve result of DNS query */
std::string ip;
int iterations = 0;
- if (dns1.ReverseLookup(inet_ntoa(u->ip4),false))
+ if (dns1.ReverseLookup(insp_ntoa(u->ip4),false))
{
/* FIX: Dont make these infinite! */
while ((!dns1.HasResult()) && (++iterations < 20))
if (dns2.GetFD() != -1)
{
ip = dns2.GetResultIP();
- if (ip == std::string(inet_ntoa(u->ip4)))
+ if (ip == std::string(insp_ntoa(u->ip4)))
{
if (host.length() < 65)
{
}
if ((hostname != "") && (usr->registered != REG_ALL))
{
- if ((std::string(inet_ntoa(usr->ip4)) == ip) && (hostname.length() < 65))
+ if ((std::string(insp_ntoa(usr->ip4)) == ip) && (hostname.length() < 65))
{
if ((hostname.find_last_of(".in-addr.arpa") == hostname.length() - 1) && (hostname.find_last_of(".in-addr.arpa") != std::string::npos))
{
bool irc::InAddr_HashComp::operator()(const insp_inaddr &s1, const insp_inaddr &s2) const
{
+#ifdef IPV6
+ for (int n = 0; n < 16; n++)
+ if (s2.s6_addr[n] != s1.s6_addr[n])
+ return false;
+ return true;
+#else
return (s1.s_addr == s1.s_addr);
+#endif
}
/******************************************************
{
for (ClassVector::iterator i = Config->Classes.begin(); i != Config->Classes.end(); i++)
{
- if ((match(inet_ntoa(user->ip4),i->host.c_str())) || (match(user->host,i->host.c_str())))
+ if ((match(insp_ntoa(user->ip4),i->host.c_str())) || (match(user->host,i->host.c_str())))
{
return *i;
}
if ((incomingSockfd > -1) && (!getsockname(incomingSockfd,(sockaddr*)&sock_us,&uslen)))
{
+#ifdef IPV6
+ in_port = ntohs(sock_us.sin6_port);
+#else
in_port = ntohs(sock_us.sin_port);
+#endif
log(DEBUG,"Accepted socket %d",incomingSockfd);
/* Years and years ago, we used to resolve here
* using gethostbyaddr(). That is sucky and we
{
try
{
- Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, inet_ntoa(client.sin_addr), in_port);
+#ifdef IPV6
+ Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, insp_ntoa(client.sin6_addr), in_port);
+#else
+ Config->GetIOHook(in_port)->OnRawSocketAccept(incomingSockfd, insp_ntoa(client.sin_addr), in_port);
+#endif
}
catch (ModuleException& modexcept)
{
}
}
stats->statsAccept++;
+#ifdef IPV6
+ AddClient(incomingSockfd, in_port, false, client.sin6_addr);
+#else
AddClient(incomingSockfd, in_port, false, client.sin_addr);
+#endif
log(DEBUG,"Adding client on port %lu fd=%lu",(unsigned long)in_port,(unsigned long)incomingSockfd);
}
else
strlcpy(this->host,ahost.c_str(),MAXBUF);
this->port = aport;
- if (!inet_aton(host,&addy))
+ if (!insp_aton(host,&addy))
{
log(DEBUG,"Attempting to resolve %s",this->host);
/* Its not an ip, spawn the resolver */
insp_sockaddr s;
char resolved_addr[MAXBUF];
- if (!inet_aton(IP.c_str(),&n))
+ if (!insp_aton(IP.c_str(),&n))
{
/* If they gave a hostname, bind to the IP it resolves to */
log(DEBUG,"Resolving host %s",IP.c_str());
}
}
- if (inet_aton(IP.c_str(),&n))
+ if (insp_aton(IP.c_str(),&n))
{
log(DEBUG,"Found an IP to bind to: %s",IP.c_str());
+#ifdef IPV6
+ s.sin6_addr = n;
+ s.sin6_family = AF_FAMILY;
+#else
s.sin_addr = n;
s.sin_family = AF_FAMILY;
+#endif
if (bind(this->fd,(struct sockaddr*)&s,sizeof(s)) < 0)
{
log(DEBUG,"Cant bind()");
return false;
log(DEBUG,"Part 2 DoConnect() %s",this->IP);
- inet_aton(this->IP,&addy);
+ insp_aton(this->IP,&addy);
+#ifdef IPV6
+ addr.sin6_family = AF_FAMILY;
+ memcpy(&addy, &addr.sin6_addr, sizeof(insp_inaddr));
+ addr.sin6_port = htons(this->port);
+#else
addr.sin_family = AF_FAMILY;
addr.sin_addr = addy;
addr.sin_port = htons(this->port);
+#endif
int flags;
flags = fcntl(this->fd, F_GETFL, 0);
length = sizeof (client);
incoming = accept (this->fd, (sockaddr*)&client,&length);
this->SetQueues(incoming);
- this->OnIncomingConnection(incoming,inet_ntoa(client.sin_addr));
+#ifdef IPV6
+ this->OnIncomingConnection(incoming,(char*)insp_ntoa(client.sin6_addr));
+#else
+ this->OnIncomingConnection(incoming,(char*)insp_ntoa(client.sin_addr));
+#endif
return true;
break;
case I_CONNECTED:
public:
/* Create a socket on a random port. Let the tcp stack allocate us an available port */
+#ifdef IPV6
+ Notifier(Server* S) : InspSocket("::1", 0, true, 3000), Srv(S)
+#else
Notifier(Server* S) : InspSocket("127.0.0.1", 0, true, 3000), Srv(S)
+#endif
{
uslen = sizeof(sock_us);
if (getsockname(this->fd,(sockaddr*)&sock_us,&uslen))
/* Using getsockname and ntohs, we can determine which port number we were allocated */
int GetPort()
{
+#ifdef IPV6
+ return ntohs(sock_us.sin6_port);
+#else
return ntohs(sock_us.sin_port);
+#endif
}
virtual int OnIncomingConnection(int newsock, char* ip)
log(DEBUG,"Initialize QueueFD to %d",QueueFD);
insp_sockaddr addr;
+
+#ifdef IPV6
+ insp_aton("::1", &addr.sin6_addr);
+ addr.sin6_family = AF_FAMILY;
+ addr.sin6_port = htons(MessagePipe->GetPort());
+#else
insp_inaddr ia;
- inet_aton("127.0.0.1", &ia);
+ insp_aton("127.0.0.1", &ia);
addr.sin_family = AF_FAMILY;
addr.sin_addr = ia;
addr.sin_port = htons(MessagePipe->GetPort());
+#endif
if (connect(QueueFD, (sockaddr*)&addr,sizeof(addr)) == -1)
{
virtual void OnUserRegister(userrec* user)
{
- log(DEBUG, "m_cgiirc.so: User %s registering, %s %s", user->nick,user->host,inet_ntoa(user->ip4));
+ log(DEBUG, "m_cgiirc.so: User %s registering, %s %s", user->nick,user->host,insp_ntoa(user->ip4));
for(CGIHostlist::iterator iter = Hosts.begin(); iter != Hosts.end(); iter++)
{
- log(DEBUG, "m_cgiirc.so: Matching %s against (%s or %s)", iter->hostmask.c_str(), user->host, inet_ntoa(user->ip4));
+ log(DEBUG, "m_cgiirc.so: Matching %s against (%s or %s)", iter->hostmask.c_str(), user->host, insp_ntoa(user->ip4));
- if(Srv->MatchText(user->host, iter->hostmask) || Srv->MatchText(inet_ntoa(user->ip4), iter->hostmask))
+ if(Srv->MatchText(user->host, iter->hostmask) || Srv->MatchText(insp_ntoa(user->ip4), iter->hostmask))
{
// Deal with it...
- log(DEBUG, "m_cgiirc.so: Handling CGI:IRC user: %s (%s) matched %s", user->GetFullRealHost(), inet_ntoa(user->ip4), iter->hostmask.c_str());
+ log(DEBUG, "m_cgiirc.so: Handling CGI:IRC user: %s (%s) matched %s", user->GetFullRealHost(), insp_ntoa(user->ip4), iter->hostmask.c_str());
if(iter->type == PASS)
{
if(IsValidHost(user->password))
{
user->Extend("cgiirc_realhost", new std::string(user->host));
- user->Extend("cgiirc_realip", new std::string(inet_ntoa(user->ip4)));
+ user->Extend("cgiirc_realip", new std::string(insp_ntoa(user->ip4)));
strlcpy(user->host, user->password, 64);
strlcpy(user->dhost, user->password, 64);
- if(inet_aton(user->password, &user->ip4))
+ if(insp_aton(user->password, &user->ip4))
{
/* We were given a IP in the password, we don't do DNS so they get this is as their host as well. */
log(DEBUG, "m_cgiirc.so: Got an IP in the user's password");
snprintf(newip, 16, "%d.%d.%d.%d", ip[0], ip[1], ip[2], ip[3]);
user->Extend("cgiirc_realhost", new std::string(user->host));
- user->Extend("cgiirc_realip", new std::string(inet_ntoa(user->ip4)));
- inet_aton(newip, &user->ip4);
+ user->Extend("cgiirc_realip", new std::string(insp_ntoa(user->ip4)));
+ insp_aton(newip, &user->ip4);
try
{
/* /check on an IP address, or something that doesn't exist */
insp_sockaddr addr;
long x = 0;
-
- if (inet_aton(parameters[0], &addr.sin_addr) == 0)
+#ifdef IPV6
+ if (insp_aton(parameters[0], &addr.sin6_addr) == 0)
+#else
+ if (insp_aton(parameters[0], &addr.sin_addr) == 0)
+#endif
{
/* hostname or other */
for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++)
/* IP address */
for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++)
{
+#ifdef IPV6
+ /* TODO: Clone matching for IPV6 ips */
+#else
if (addr.sin_addr.s_addr == a->second->ip4.s_addr)
{
/* same IP. */
Srv->SendTo(NULL, user, checkstr + " match " + ConvToStr(++x) + " " + a->second->GetFullRealHost());
}
+#endif
}
}
userrec* u; // user record that the lookup is associated with
int ufd;
- RFC1413(userrec* user, int maxtime, Server* S) : InspSocket((char*)inet_ntoa(user->ip4), 113, false, maxtime), Srv(S), u(user), ufd(user->fd)
+ RFC1413(userrec* user, int maxtime, Server* S) : InspSocket((char*)insp_ntoa(user->ip4), 113, false, maxtime), Srv(S), u(user), ufd(user->fd)
{
Srv->Log(DEBUG,"Ident: associated.");
}
else
{
// send the request in the following format: theirsocket,oursocket
+#ifdef IPV6
+ snprintf(ident_request,127,"%d,%d\r\n",ntohs(sock_them.sin6_port),ntohs(sock_us.sin6_port));
+#else
snprintf(ident_request,127,"%d,%d\r\n",ntohs(sock_them.sin_port),ntohs(sock_us.sin_port));
+#endif
this->Write(ident_request);
Srv->Log(DEBUG,"Sent ident request, waiting for reply");
return true;
{
clientlist[tempnick]->modes[(*v)-65] = 1;
}
- inet_aton(params[6].c_str(),&clientlist[tempnick]->ip4);
+ insp_aton(params[6].c_str(),&clientlist[tempnick]->ip4);
- WriteOpers("*** Client connecting at %s: %s!%s@%s [%s]",clientlist[tempnick]->server,clientlist[tempnick]->nick,clientlist[tempnick]->ident,clientlist[tempnick]->host, inet_ntoa(clientlist[tempnick]->ip4));
+ WriteOpers("*** Client connecting at %s: %s!%s@%s [%s]",clientlist[tempnick]->server,clientlist[tempnick]->nick,clientlist[tempnick]->ident,clientlist[tempnick]->host, insp_ntoa(clientlist[tempnick]->ip4));
params[7] = ":" + params[7];
DoOneToAllButSender(source,"NICK",params,source);
{
if (u->second->registered == REG_ALL)
{
- snprintf(data,MAXBUF,":%s NICK %lu %s %s %s %s +%s %s :%s",u->second->server,(unsigned long)u->second->age,u->second->nick,u->second->host,u->second->dhost,u->second->ident,u->second->FormatModes(),inet_ntoa(u->second->ip4),u->second->fullname);
+ snprintf(data,MAXBUF,":%s NICK %lu %s %s %s %s +%s %s :%s",u->second->server,(unsigned long)u->second->age,u->second->nick,u->second->host,u->second->dhost,u->second->ident,u->second->FormatModes(),insp_ntoa(u->second->ip4),u->second->fullname);
this->WriteLine(data);
if (*u->second->oper)
{
params.push_back(user->dhost);
params.push_back(user->ident);
params.push_back("+"+std::string(user->FormatModes()));
- params.push_back((char*)inet_ntoa(user->ip4));
+ params.push_back((char*)insp_ntoa(user->ip4));
params.push_back(":"+std::string(user->fullname));
DoOneToMany(Srv->GetServerName(),"NICK",params);
userrec *u = Find(parameters[i]);
if (u)
{
- snprintf(junk,MAXBUF,"%s%s=+%s@%s ",u->nick,*u->oper ? "*" : "",u->ident,(char*)inet_ntoa(u->ip4));
+ snprintf(junk,MAXBUF,"%s%s=+%s@%s ",u->nick,*u->oper ? "*" : "",u->ident,(char*)insp_ntoa(u->ip4));
strlcat(Return,junk,MAXBUF);
}
}
if (*addr == '*')
*addr = 0;
- if (*addr && !inet_aton(addr,&addy))
+ if (*addr && !insp_aton(addr,&addy))
{
/* If they gave a hostname, bind to the IP it resolves to */
if (CleanAndResolve(resolved_addr, addr, true, 1))
{
- inet_aton(resolved_addr,&addy);
+ insp_aton(resolved_addr,&addy);
log(DEFAULT,"Resolved binding '%s' -> '%s'",addr,resolved_addr);
+#ifdef IPV6
+ /* Todo: Deal with resolution of IPV6 */
+ server.sin6_addr = addy;
+#else
server.sin_addr = addy;
+#endif
resolved = true;
}
else
return false;
}
}
+#ifdef IPV6
+ server.sin6_family = AF_FAMILY;
+#else
server.sin_family = AF_FAMILY;
+#endif
if (!resolved)
{
if (!*addr)
{
+#ifdef IPV6
+ memcpy(&addy, &server.sin6_addr, sizeof(in6_addr));
+#else
server.sin_addr.s_addr = htonl(INADDR_ANY);
+#endif
}
else
{
+#ifdef IPV6
+ memcpy(&addy, &server.sin6_addr, sizeof(in6_addr));
+#else
server.sin_addr = addy;
+#endif
}
}
+#ifdef IPV6
+ server.sin6_port = htons(port);
+#else
server.sin_port = htons(port);
+#endif
if (bind(sockfd,(struct sockaddr*)&server,sizeof(server)) < 0)
{
return false;
return BoundPortCount;
}
+
+const char* 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)
+{
+ return (inet_pton(AF_FAMILY, a, &n) < 0);
+}
}
else
{
- WriteOpers("*** Excess flood from %s",(char*)inet_ntoa(current->ip4));
- log(DEFAULT,"Excess flood from: %s",(char*)inet_ntoa(current->ip4));
- add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)inet_ntoa(current->ip4));
+ WriteOpers("*** Excess flood from %s",(char*)insp_ntoa(current->ip4));
+ log(DEFAULT,"Excess flood from: %s",(char*)insp_ntoa(current->ip4));
+ add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)insp_ntoa(current->ip4));
apply_lines(APPLY_ZLINES);
}
}
else
{
- WriteOpers("*** Excess flood from %s",(char*)inet_ntoa(current->ip4));
- log(DEFAULT,"Excess flood from: %s",(char*)inet_ntoa(current->ip4));
- add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)inet_ntoa(current->ip4));
+ WriteOpers("*** Excess flood from %s",(char*)insp_ntoa(current->ip4));
+ log(DEFAULT,"Excess flood from: %s",(char*)insp_ntoa(current->ip4));
+ add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)insp_ntoa(current->ip4));
apply_lines(APPLY_ZLINES);
}
}
else
{
- add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)inet_ntoa(current->ip4));
+ add_zline(120,Config->ServerName,"Flood from unregistered connection",(char*)insp_ntoa(current->ip4));
apply_lines(APPLY_ZLINES);
}
{
std::string tempnick = ConvToStr(socket) + "-unknown";
user_hash::iterator iter = clientlist.find(tempnick);
- const char *ipaddr = inet_ntoa(ip4);
+ const char *ipaddr = insp_ntoa(ip4);
userrec* _new;
int j = 0;
long x = 0;
for (user_hash::const_iterator a = clientlist.begin(); a != clientlist.end(); a++)
{
+#ifdef IPV6
+ /* TODO: clone matching for ipv6 */
+#else
if (a->second->ip4.s_addr == user->ip4.s_addr)
x++;
+#endif
}
return x;
}
long x = 0;
for (std::vector<userrec*>::const_iterator a = local_users.begin(); a != local_users.end(); a++)
{
- userrec* comp = (userrec*)(*a);
+#ifdef IPV6
+ /* TODO clone matching for ipv6 */
+#else
+ userrec* comp = *a;
if (comp->ip4.s_addr == user->ip4.s_addr)
x++;
+#endif
}
return x;
}
if (FindMatchingLocal(user) > a.maxlocal)
{
Goners->AddItem(user,"No more connections allowed from your host via this connect class (local)");
- WriteOpers("*** WARNING: maximum LOCAL connections (%ld) exceeded for IP %s",a.maxlocal,inet_ntoa(user->ip4));
+ WriteOpers("*** WARNING: maximum LOCAL connections (%ld) exceeded for IP %s",a.maxlocal,insp_ntoa(user->ip4));
return;
}
else if (FindMatchingGlobal(user) > a.maxglobal)
{
Goners->AddItem(user,"No more connections allowed from your host via this connect class (global)");
- WriteOpers("*** WARNING: maximum GLOBAL connections (%ld) exceeded for IP %s",a.maxglobal,inet_ntoa(user->ip4));
+ WriteOpers("*** WARNING: maximum GLOBAL connections (%ld) exceeded for IP %s",a.maxglobal,insp_ntoa(user->ip4));
return;
}
FOREACH_MOD(I_OnUserConnect,OnUserConnect(user));
FOREACH_MOD(I_OnGlobalConnect,OnGlobalConnect(user));
user->registered = REG_ALL;
- WriteOpers("*** Client connecting on port %lu: %s!%s@%s [%s]",(unsigned long)user->port,user->nick,user->ident,user->host,inet_ntoa(user->ip4));
+ WriteOpers("*** Client connecting on port %lu: %s!%s@%s [%s]",(unsigned long)user->port,user->nick,user->ident,user->host,insp_ntoa(user->ip4));
}
/** ReHashNick()
}
if ((What & APPLY_ZLINES) && (zlines.size() || pzlines.size()))
{
- if ((check = matches_zline((char*)inet_ntoa(u->ip4))))
+ if ((check = matches_zline(insp_ntoa(u->ip4))))
{
snprintf(reason,MAXBUF,"Z-Lined: %s",check);
Goners->AddItem(u,reason);