From: wessels <> Date: Wed, 16 Jul 1997 10:48:27 +0000 (+0000) Subject: tack all the peer structures onto Config X-Git-Tag: SQUID_3_0_PRE1~4881 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=40a1495eb6442fc92d045eb684373553852fc268;p=thirdparty%2Fsquid.git tack all the peer structures onto Config --- diff --git a/src/cache_cf.cc b/src/cache_cf.cc index 36af67be25..232a99e967 100644 --- a/src/cache_cf.cc +++ b/src/cache_cf.cc @@ -1,5 +1,5 @@ /* - * $Id: cache_cf.cc,v 1.207 1997/07/15 23:23:15 wessels Exp $ + * $Id: cache_cf.cc,v 1.208 1997/07/16 04:48:27 wessels Exp $ * * DEBUG: section 3 Configuration File Parsing * AUTHOR: Harvest Derived @@ -60,7 +60,6 @@ static void parse_string _PARAMS((char **)); static void parse_wordlist _PARAMS((wordlist **)); static void default_all _PARAMS((void)); static int parse_line _PARAMS((char *)); -static cache_peer *configFindPeer _PARAMS((const char *name)); static void parseBytesLine _PARAMS((size_t * bptr, const char *units)); static size_t parseBytesUnits _PARAMS((const char *unit)); @@ -213,7 +212,6 @@ static void configDoConfigure(void) { LOCAL_ARRAY(char, buf, BUFSIZ); - cache_peer *p; memset(&Config2, '\0', sizeof(SquidConfig2)); if (Config.Accel.host) { snprintf(buf, BUFSIZ, "http://%s:%d", Config.Accel.host, Config.Accel.port); @@ -242,16 +240,6 @@ configDoConfigure(void) Config.appendDomainLen = 0; safe_free(debug_options) debug_options = xstrdup(Config.debugOptions); - /* ICK */ - for (p = Config.peers; p; p = p->next) { - neighborAdd(p->host, - p->type, - p->http, - p->icp, - p->options, - p->weight, - p->mcast_ttl); - } } /* Parse a time specification from the config file. Store the @@ -486,74 +474,88 @@ free_cachedir(struct _cacheSwap *swap) } static void -dump_cache_peer(cache_peer * p) +dump_peer(peer * p) { assert(0); } static void -parse_cache_peer(cache_peer ** head) +parse_peer(peer ** head) { char *token = NULL; - cache_peer peer; - cache_peer *p; + peer *p; int i; - memset(&peer, '\0', sizeof(cache_peer)); - peer.http = CACHE_HTTP_PORT; - peer.icp = CACHE_ICP_PORT; - peer.weight = 1; - if (!(peer.host = strtok(NULL, w_space))) + ushortlist *u; + const char *me = getMyHostname(); + p = xcalloc(1, sizeof(peer)); + p->http_port = CACHE_HTTP_PORT; + p->icp_port = CACHE_ICP_PORT; + p->weight = 1; + if ((token = strtok(NULL, w_space)) == NULL) { + debug(0,0)("bad hostname\n"); self_destruct(); - if (!(peer.type = strtok(NULL, w_space))) + } + p->host = xstrdup(token); + if ((token = strtok(NULL, w_space)) == NULL) { + debug(0,0)("bad type\n"); self_destruct(); + } + p->type = parseNeighborType(token); GetInteger(i); - peer.http = (u_short) i; + p->http_port = (u_short) i; GetInteger(i); - peer.icp = (u_short) i; + p->icp_port = (u_short) i; + if (strcmp(p->host, me) == 0) { + for (u = Config.Port.http; u; u = u->next) { + if (p->http_port != u->i) + continue; + debug(15, 0) ("parse_peer: Peer looks like myself: %s %s/%d/%d\n", + p->type, p->host, p->http_port, p->icp_port); + self_destruct(); + } + } while ((token = strtok(NULL, w_space))) { if (!strcasecmp(token, "proxy-only")) { - peer.options |= NEIGHBOR_PROXY_ONLY; + p->options |= NEIGHBOR_PROXY_ONLY; } else if (!strcasecmp(token, "no-query")) { - peer.options |= NEIGHBOR_NO_QUERY; + p->options |= NEIGHBOR_NO_QUERY; } else if (!strcasecmp(token, "multicast-responder")) { - peer.options |= NEIGHBOR_MCAST_RESPONDER; + p->options |= NEIGHBOR_MCAST_RESPONDER; } else if (!strncasecmp(token, "weight=", 7)) { - peer.weight = atoi(token + 7); + p->weight = atoi(token + 7); } else if (!strncasecmp(token, "ttl=", 4)) { - peer.mcast_ttl = atoi(token + 4); - if (peer.mcast_ttl < 0) - peer.mcast_ttl = 0; - if (peer.mcast_ttl > 128) - peer.mcast_ttl = 128; + p->mcast.ttl = atoi(token + 4); + if (p->mcast.ttl < 0) + p->mcast.ttl = 0; + if (p->mcast.ttl > 128) + p->mcast.ttl = 128; } else if (!strncasecmp(token, "default", 7)) { - peer.options |= NEIGHBOR_DEFAULT_PARENT; + p->options |= NEIGHBOR_DEFAULT_PARENT; } else if (!strncasecmp(token, "round-robin", 11)) { - peer.options |= NEIGHBOR_ROUNDROBIN; + p->options |= NEIGHBOR_ROUNDROBIN; } else { - debug(3, 0) ("parse_cache_peer: token='%s'\n", token); + debug(3, 0) ("parse_peer: token='%s'\n", token); self_destruct(); } } - if (peer.weight < 1) - peer.weight = 1; - p = xcalloc(1, sizeof(cache_peer)); - *p = peer; - p->host = xstrdup(peer.host); - p->type = xstrdup(peer.type); + if (p->weight < 1) + p->weight = 1; + p->icp_version = ICP_VERSION_CURRENT; + p->tcp_up = 1; + cbdataAdd(p); while (*head != NULL) head = &(*head)->next; *head = p; + Config.npeers++; } static void -free_cache_peer(cache_peer ** P) +free_peer(peer ** P) { - cache_peer *p; + peer *p; while ((p = *P)) { *P = p->next; - xfree(p->host); - xfree(p->type); - xfree(p); + peerDestroy(p); } } @@ -624,11 +626,11 @@ parse_peeracl(void) if (!(host = strtok(NULL, w_space))) self_destruct(); while ((aclname = strtok(NULL, list_sep))) { - cache_peer *p; + peer *p; acl_list *L = NULL; acl_list **Tail = NULL; acl *a = NULL; - if ((p = configFindPeer(host)) == NULL) { + if ((p = peerFindByName(host)) == NULL) { debug(15, 0) ("%s, line %d: No cache_host '%s'\n", cfg_filename, config_lineno, host); return; @@ -654,17 +656,6 @@ parse_peeracl(void) } } -static cache_peer * -configFindPeer(const char *name) -{ - cache_peer *p = NULL; - for (p = Config.peers; p; p = p->next) { - if (!strcasecmp(name, p->host)) - break; - } - return p; -} - static void parse_hostdomain(void) { @@ -675,8 +666,8 @@ parse_hostdomain(void) while ((domain = strtok(NULL, list_sep))) { domain_ping *l = NULL; domain_ping **L = NULL; - cache_peer *p; - if ((p = configFindPeer(host)) == NULL) { + peer *p; + if ((p = peerFindByName(host)) == NULL) { debug(15, 0) ("%s, line %d: No cache_host '%s'\n", cfg_filename, config_lineno, host); continue; @@ -706,8 +697,8 @@ parse_hostdomaintype(void) while ((domain = strtok(NULL, list_sep))) { domain_type *l = NULL; domain_type **L = NULL; - cache_peer *p; - if ((p = configFindPeer(host)) == NULL) { + peer *p; + if ((p = peerFindByName(host)) == NULL) { debug(15, 0) ("%s, line %d: No cache_host '%s'\n", cfg_filename, config_lineno, host); return; diff --git a/src/cf.data.pre b/src/cf.data.pre index dabb47373a..266fd97188 100644 --- a/src/cf.data.pre +++ b/src/cf.data.pre @@ -107,8 +107,8 @@ DOC_END # OPTIONS WHICH AFFECT THE NEIGHBOR SELECTION ALGORITHM #----------------------------------------------------------------------------- -NAME: cache_peer cache_host -TYPE: cache_peer +NAME: cache_peer +TYPE: peer DEFAULT: none LOC: Config.peers DOC_START diff --git a/src/main.cc b/src/main.cc index 89a3a39e09..dff3a9650d 100644 --- a/src/main.cc +++ b/src/main.cc @@ -1,6 +1,6 @@ /* - * $Id: main.cc,v 1.163 1997/07/15 23:23:28 wessels Exp $ + * $Id: main.cc,v 1.164 1997/07/16 04:48:29 wessels Exp $ * * DEBUG: section 1 Startup and Main Loop * AUTHOR: Harvest Derived @@ -434,7 +434,6 @@ mainReconfigure(void) { debug(1, 0) ("Restarting Squid Cache (version %s)...\n", version_string); /* Already called serverConnectionsClose and ipcacheShutdownServers() */ - neighborsDestroy(); parseConfigFile(ConfigFile); _db_init(Config.Log.log, Config.debugOptions); ipcache_restart(); /* clear stuck entries */ diff --git a/src/neighbors.cc b/src/neighbors.cc index a47cd25a6b..3ad3441621 100644 --- a/src/neighbors.cc +++ b/src/neighbors.cc @@ -1,5 +1,5 @@ /* - * $Id: neighbors.cc,v 1.151 1997/07/15 23:23:30 wessels Exp $ + * $Id: neighbors.cc,v 1.152 1997/07/16 04:48:29 wessels Exp $ * * DEBUG: section 15 Neighbor Routines * AUTHOR: Harvest Derived @@ -129,17 +129,7 @@ static icp_common_t echo_hdr; static u_short echo_port; static int NLateReplies = 0; - -static struct { - int n; - peer *peers_head; - peer *peers_tail; - peer *first_ping; - peer *removed; -} Peers = { - - 0, NULL, NULL, NULL -}; +static peer *first_ping = NULL; char * neighborTypeStr(const peer * p) @@ -160,7 +150,7 @@ whichPeer(const struct sockaddr_in *from) struct in_addr ip = from->sin_addr; peer *p = NULL; debug(15, 3) ("whichPeer: from %s port %d\n", inet_ntoa(ip), port); - for (p = Peers.peers_head; p; p = p->next) { + for (p = Config.peers; p; p = p->next) { for (j = 0; j < p->n_addresses; j++) { if (ip.s_addr == p->addresses[j].s_addr && port == p->icp_port) { return p; @@ -260,7 +250,7 @@ neighborsCount(request_t * request) { peer *p = NULL; int count = 0; - for (p = Peers.peers_head; p; p = p->next) + for (p = Config.peers; p; p = p->next) if (peerWouldBePinged(p, request)) count++; debug(15, 3) ("neighborsCount: %d\n", count); @@ -272,7 +262,7 @@ getSingleParent(request_t * request) { peer *p = NULL; peer *q = NULL; - for (q = Peers.peers_head; q; q = q->next) { + for (q = Config.peers; q; q = q->next) { if (!peerHTTPOkay(q, request)) continue; if (neighborType(q, request) != PEER_PARENT) @@ -289,7 +279,7 @@ peer * getFirstUpParent(request_t * request) { peer *p = NULL; - for (p = Peers.peers_head; p; p = p->next) { + for (p = Config.peers; p; p = p->next) { if (!neighborUp(p)) continue; if (neighborType(p, request) != PEER_PARENT) @@ -307,7 +297,7 @@ getRoundRobinParent(request_t * request) { peer *p; peer *q = NULL; - for (p = Peers.peers_head; p; p = p->next) { + for (p = Config.peers; p; p = p->next) { if (!BIT_TEST(p->options, NEIGHBOR_ROUNDROBIN)) continue; if (neighborType(p, request) != PEER_PARENT) @@ -328,7 +318,7 @@ peer * getDefaultParent(request_t * request) { peer *p = NULL; - for (p = Peers.peers_head; p; p = p->next) { + for (p = Config.peers; p; p = p->next) { if (neighborType(p, request) != PEER_PARENT) continue; if (!BIT_TEST(p->options, NEIGHBOR_DEFAULT_PARENT)) @@ -350,7 +340,7 @@ getNextPeer(peer * p) peer * getFirstPeer(void) { - return Peers.peers_head; + return Config.peers; } static void @@ -358,8 +348,8 @@ neighborRemove(peer * target) { peer *p = NULL; peer **P = NULL; - p = Peers.peers_head; - P = &Peers.peers_head; + p = Config.peers; + P = &Config.peers; while (p) { if (target == p) break; @@ -368,30 +358,10 @@ neighborRemove(peer * target) } if (p) { *P = p->next; - p->next = Peers.removed; - Peers.removed = p; - p->stats.ack_deficit = HIER_MAX_DEFICIT; - Peers.n--; - } - Peers.first_ping = Peers.peers_head; -} - -void -neighborsDestroy(void) -{ - peer *p = NULL; - peer *next = NULL; - debug(15, 3) ("neighborsDestroy: called\n"); - for (p = Peers.peers_head; p; p = next) { - next = p->next; peerDestroy(p); - Peers.n--; + Config.npeers--; } - for (p = Peers.removed; p; p = next) { - next = p->next; - peerDestroy(p); - } - memset(&Peers, '\0', sizeof(Peers)); + first_ping = Config.peers; } void @@ -438,7 +408,7 @@ neighborsUdpPing(request_t * request, int queries_sent = 0; int peers_pinged = 0; - if (Peers.peers_head == NULL) + if (Config.peers == NULL) return 0; if (theOutIcpConnection < 0) { debug(15, 0) ("neighborsUdpPing: There is no ICP socket!\n"); @@ -454,9 +424,9 @@ neighborsUdpPing(request_t * request, mem->start_ping = current_time; mem->icp_reply_callback = callback; mem->ircb_data = callback_data; - for (i = 0, p = Peers.first_ping; i++ < Peers.n; p = p->next) { + for (i = 0, p = first_ping; i++ < Config.npeers; p = p->next) { if (p == NULL) - p = Peers.peers_head; + p = Config.peers; debug(15, 5) ("neighborsUdpPing: Peer %s\n", p->host); if (!peerWouldBePinged(p, request)) continue; /* next peer */ @@ -517,11 +487,11 @@ neighborsUdpPing(request_t * request, } } } - if ((Peers.first_ping = Peers.first_ping->next) == NULL) - Peers.first_ping = Peers.peers_head; + if ((first_ping = first_ping->next) == NULL) + first_ping = Config.peers; /* only do source_ping if we have neighbors */ - if (Peers.n) { + if (Config.npeers) { if (!Config.sourcePing) { debug(15, 6) ("neighborsUdpPing: Source Ping is disabled.\n"); } else if ((ia = ipcache_gethostbyname(host, 0))) { @@ -717,58 +687,11 @@ neighborsUdpAck(int fd, const char *url, icp_common_t * header, const struct soc } } -void -neighborAdd(const char *host, - const char *type, - int http_port, - int icp_port, - int options, - int weight, - int mcast_ttl) -{ - peer *p = NULL; - ushortlist *u; - const char *me = getMyHostname(); - if (!strcmp(host, me)) { - for (u = Config.Port.http; u; u = u->next) { - if (http_port != u->i) - continue; - debug(15, 0) ("neighborAdd: skipping cache_host %s %s/%d/%d\n", - type, host, http_port, icp_port); - return; - } - } - p = xcalloc(1, sizeof(peer)); - cbdataAdd(p); - p->http_port = http_port; - p->icp_port = icp_port; - p->mcast.ttl = mcast_ttl; - p->options = options; - p->weight = weight; - p->host = xstrdup(host); - p->pinglist = NULL; - p->typelist = NULL; - p->acls = NULL; - p->icp_version = ICP_VERSION_CURRENT; - p->type = parseNeighborType(type); - p->tcp_up = 1; - - /* Append peer */ - if (!Peers.peers_head) - Peers.peers_head = p; - if (Peers.peers_tail) - Peers.peers_tail->next = p; - Peers.peers_tail = p; - Peers.n++; - if (!Peers.first_ping) - Peers.first_ping = p; -} - peer * -neighborFindByName(const char *name) +peerFindByName(const char *name) { peer *p = NULL; - for (p = Peers.peers_head; p; p = p->next) { + for (p = Config.peers; p; p = p->next) { if (!strcasecmp(name, p->host)) break; } @@ -851,7 +774,7 @@ static void peerRefreshDNS(void *junk) { peer *p = NULL; - peer *next = Peers.peers_head; + peer *next = Config.peers; while ((p = next)) { next = p->next; p->ip_lookup_pending = 1; diff --git a/src/protos.h b/src/protos.h index a1d55627ea..2e538d69b1 100644 --- a/src/protos.h +++ b/src/protos.h @@ -287,7 +287,6 @@ extern void ipcacheShutdownServers _PARAMS((void)); extern void ipcache_init _PARAMS((void)); extern void stat_ipcache_get _PARAMS((StoreEntry *)); extern int ipcacheQueueDrain _PARAMS((void)); -extern void ipcacheOpenServers _PARAMS((void)); extern void ipcacheCycleAddr _PARAMS((const char *name)); extern void ipcacheRemoveBadAddr _PARAMS((const char *name, struct in_addr)); extern void ipcacheFreeMemory _PARAMS((void)); @@ -329,7 +328,7 @@ extern void neighborsUdpAck _PARAMS((int, const char *, icp_common_t *, const st extern void neighborAdd _PARAMS((const char *, const char *, int, int, int, int, int)); extern void neighbors_open _PARAMS((int)); extern void neighborsDestroy _PARAMS((void)); -extern peer *neighborFindByName _PARAMS((const char *)); +extern peer *peerFindByName _PARAMS((const char *)); extern void neighbors_init _PARAMS((void)); extern peer *getDefaultParent _PARAMS((request_t * request)); extern peer *getRoundRobinParent _PARAMS((request_t * request)); diff --git a/src/ssl.cc b/src/ssl.cc index 600f01e6c7..733794cd40 100644 --- a/src/ssl.cc +++ b/src/ssl.cc @@ -1,6 +1,6 @@ /* - * $Id: ssl.cc,v 1.56 1997/07/14 23:45:04 wessels Exp $ + * $Id: ssl.cc,v 1.57 1997/07/16 04:48:31 wessels Exp $ * * DEBUG: section 26 Secure Sockets Layer Proxy * AUTHOR: Duane Wessels @@ -445,7 +445,7 @@ sslPeerSelectComplete(peer * p, void *data) sslState->port = request->port; } else if (p->http_port != 0) { sslState->port = p->http_port; - } else if ((g = neighborFindByName(p->host))) { + } else if ((g = peerFindByName(p->host))) { sslState->port = g->http_port; } else { sslState->port = CACHE_HTTP_PORT; diff --git a/src/structs.h b/src/structs.h index e6f5f509b2..1d8561f372 100644 --- a/src/structs.h +++ b/src/structs.h @@ -85,20 +85,6 @@ struct _relist { struct _relist *next; }; -struct _cache_peer { - char *host; - char *type; - u_short http; - u_short icp; - int options; - int weight; - int mcast_ttl; - domain_ping *pinglist; - domain_type *typelist; - acl_list *acls; - struct _cache_peer *next; -}; - struct _SquidConfig { struct { size_t maxSize; @@ -195,9 +181,8 @@ struct _SquidConfig { wordlist *mcast_group_list; wordlist *dns_testname_list; relist *cache_stop_relist; - cache_peer *peers; - cache_peer *sslProxy; - cache_peer *passProxy; + peer *peers; + int npeers; struct { int size; int low; diff --git a/src/tunnel.cc b/src/tunnel.cc index 528d8f2dd9..911eef8ab7 100644 --- a/src/tunnel.cc +++ b/src/tunnel.cc @@ -1,6 +1,6 @@ /* - * $Id: tunnel.cc,v 1.56 1997/07/14 23:45:04 wessels Exp $ + * $Id: tunnel.cc,v 1.57 1997/07/16 04:48:31 wessels Exp $ * * DEBUG: section 26 Secure Sockets Layer Proxy * AUTHOR: Duane Wessels @@ -445,7 +445,7 @@ sslPeerSelectComplete(peer * p, void *data) sslState->port = request->port; } else if (p->http_port != 0) { sslState->port = p->http_port; - } else if ((g = neighborFindByName(p->host))) { + } else if ((g = peerFindByName(p->host))) { sslState->port = g->http_port; } else { sslState->port = CACHE_HTTP_PORT; diff --git a/src/typedefs.h b/src/typedefs.h index 31faec2028..3ce4a398dc 100644 --- a/src/typedefs.h +++ b/src/typedefs.h @@ -22,7 +22,6 @@ typedef struct _wordlist wordlist; typedef struct _intlist intlist; typedef struct _ushortlist ushortlist; typedef struct _relist relist; -typedef struct _cache_peer cache_peer; typedef struct _SquidConfig SquidConfig; typedef struct _SquidConfig2 SquidConfig2; typedef struct _close_handler close_handler;