/*
- * charybdis: an advanced ircd.
+ * Solanum: a slightly advanced ircd
* client.c: Controls clients.
*
* Copyright (C) 1990 Jarkko Oikarinen and University of Oulu, Co Center
/* match one kline */
switch (masktype) {
case HM_IPV4:
- if (client_p->localClient->ip.ss_family == AF_INET6 &&
+ case HM_IPV6:
+ if (IsConfDoSpoofIp(client_p->localClient->att_conf) &&
+ IsConfKlineSpoof(client_p->localClient->att_conf))
+ continue;
+ if (client_p->localClient->ip.ss_family == AF_INET6 && sockaddr.ss_family == AF_INET &&
rb_ipv4_from_ipv6((struct sockaddr_in6 *)&client_p->localClient->ip, &ip4)
&& comp_with_mask_sock((struct sockaddr *)&ip4, (struct sockaddr *)&sockaddr, bits))
matched = 1;
- /* fallthrough */
- case HM_IPV6:
- if (client_p->localClient->ip.ss_family == sockaddr.ss_family &&
+ else if (client_p->localClient->ip.ss_family == sockaddr.ss_family &&
comp_with_mask_sock((struct sockaddr *)&client_p->localClient->ip,
(struct sockaddr *)&sockaddr, bits))
matched = 1;
case HM_HOST:
if (match(kline->host, client_p->orighost))
matched = 1;
+ if (IsConfDoSpoofIp(client_p->localClient->att_conf) &&
+ IsConfKlineSpoof(client_p->localClient->att_conf))
+ continue;
if (match(kline->host, client_p->sockhost))
matched = 1;
break;
target_p->name, (unsigned int) target_p->status,
(unsigned long long)target_p->flags, target_p->handler);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
- "Please report this to the charybdis developers!");
+ "Please report this to the solanum developers!");
found++;
}
}
abt->client->name, (unsigned int) abt->client->status,
(unsigned long long)abt->client->flags, abt->client->handler);
sendto_realops_snomask(SNO_GENERAL, L_ALL,
- "Please report this to the charybdis developers!");
+ "Please report this to the solanum developers!");
continue;
}
}
* to local opers.
*/
if(!ConfigFileEntry.hide_spoof_ips &&
- (source_p == NULL || MyOper(source_p)))
+ (source_p == NULL || (MyConnect(source_p) && HasPrivilege(source_p, "auspex:hostname"))))
return 1;
return 0;
}
- else if(IsDynSpoof(target_p) && (source_p != NULL && !IsOper(source_p)))
+ else if(IsDynSpoof(target_p) && (source_p != NULL && !HasPrivilege(source_p, "auspex:hostname")))
return 0;
else
return 1;