25#define WCCP_REVISION 0
26#define WCCP_ACTIVE_CACHES 32
27#define WCCP_HASH_SIZE 32
28#define WCCP_BUCKETS 256
29#define WCCP_CACHE_LEN 4
31#define WCCP_HERE_I_AM 7
32#define WCCP_I_SEE_YOU 8
33#define WCCP_ASSIGN_BUCKET 9
90 debugs(80, 5,
"wccpInit: Called");
111 debugs(80, 5,
"wccpConnectionOpen: Called");
114 debugs(80, 2,
"WCCPv1 disabled.");
138 fatal(
"Cannot open WCCP Port");
146 struct sockaddr_in router;
149 fatal(
"Unable to connect WCCP out socket");
151 struct sockaddr_in local;
152 memset(&local,
'\0',
sizeof(local));
155 fatal(
"Unable to getsockname on WCCP out socket");
196 debugs(80, 6,
"wccpHandleUdp: Called.");
207 debugs(80, 3,
"wccpHandleUdp: " << len <<
" bytes WCCP pkt from " << from <<
229 from <<
" with number of caches set to " <<
290 debugs(80, 6,
"wccpHereIam: Called");
293 double interval = 10.0;
299 debugs(80, 2,
"ERROR: failed to send WCCP HERE_I_AM packet: " <<
xstrerr(xerrno));
314 int buckets_per_cache;
321 debugs(80, 6,
"wccpAssignBuckets: Called");
331 buf = (
char *)
xmalloc(wab_len +
337 caches = (
int *) (buf + wab_len);
339 buckets = buf + wab_len + cache_len;
341 memset(wccp_assign_bucket,
'\0',
sizeof(*wccp_assign_bucket));
349 memcpy(&caches[loop],
353 for (i = 0; i < buckets_per_cache; ++i) {
#define DefineRunnerRegistrator(ClassName)
void getSockAddr(struct sockaddr_storage &addr, const int family) const
unsigned short port() const
struct SquidConfig::@80 Wccp
void startReconfigure() override
void startShutdown() override
void syncConfig() override
void useConfig() override
void comm_open_listener(int sock_type, int proto, Comm::ConnectionPointer &conn, const char *note)
ssize_t comm_udp_send(int s, const void *buf, size_t len, int flags)
int comm_udp_recvfrom(int fd, void *buf, size_t len, int flags, Ip::Address &from)
#define debugs(SECTION, LEVEL, CONTENT)
int eventFind(EVH *func, void *arg)
void eventAdd(const char *name, EVH *func, void *arg, double when, int weight, bool cbdata)
void fatal(const char *message)
void SetSelect(int, unsigned int, PF *, void *, time_t)
Mark an FD to be watched for its IO status.
static struct tok * buckets[HASHSIZE]
int xgetsockname(int socketFd, struct sockaddr *sa, socklen_t *saLength)
POSIX getsockname(2) equivalent.
int xconnect(int socketFd, const struct sockaddr *sa, socklen_t saLength)
POSIX connect(2) equivalent.
char hash[WCCP_HASH_SIZE]
char hash[WCCP_HASH_SIZE]
struct wccp_cache_entry_t wccp_cache_entry[WCCP_ACTIVE_CACHES]
static void wccpConnectionClose(void)
static Ip::Address local_ip
#define WCCP_ACTIVE_CACHES
static int last_assign_buckets_change
static unsigned int number_caches
#define WCCP_ASSIGN_BUCKET
static int wccpLowestIP(void)
static int theWccpConnection
static void wccpInit(void)
static void wccpAssignBuckets(void)
static void wccpConnectionOpen(void)
static struct wccp_i_see_you_t wccp_i_see_you
static struct wccp_here_i_am_t wccp_here_i_am
const char * xstrerr(int error)