]> git.ipfire.org Git - thirdparty/squid.git/commitdiff
tack all the peer structures onto Config
authorwessels <>
Wed, 16 Jul 1997 10:48:27 +0000 (10:48 +0000)
committerwessels <>
Wed, 16 Jul 1997 10:48:27 +0000 (10:48 +0000)
src/cache_cf.cc
src/cf.data.pre
src/main.cc
src/neighbors.cc
src/protos.h
src/ssl.cc
src/structs.h
src/tunnel.cc
src/typedefs.h

index 36af67be25ca69d57567669aad86aeb203e1d0bf..232a99e96750f6ee9cd8dc2714b5543c3391b062 100644 (file)
@@ -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;
index dabb47373ae4b50388efb66ff500be7026b31b42..266fd97188436e139521479b6212d24f2ea49de4 100644 (file)
@@ -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
index 89a3a39e090300696240aff562b2ba79989d29df..dff3a9650d3e1b4d1d5ca0efafcebac29b64357e 100644 (file)
@@ -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 */
index a47cd25a6bdefec1f1f31e345a3c17b101318df1..3ad34416215ed81033210aac4e659c2f5db0c230 100644 (file)
@@ -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;
index a1d55627eac6383a3a06a83c84090e0c49aabb62..2e538d69b102af7459be3452911b3d946dcd9df7 100644 (file)
@@ -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));
index 600f01e6c7fbe609fe9c98720231af7951a8c223..733794cd408d80cf42fa7b4ba5c8c58b1c457296 100644 (file)
@@ -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;
index e6f5f509b26e2201ba2d9695722ab1cf4beab500..1d8561f372424e56c11e0eca338f69096b5face9 100644 (file)
@@ -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;
index 528d8f2dd925844538bedeaee82df38f6be5f638..911eef8ab7be3259df9b6923bd538c243a27a487 100644 (file)
@@ -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;
index 31faec20285050437aee6dbb3da6be3b8075fc54..3ce4a398dc4946b07ef4a6e0f526a0c10f20a138 100644 (file)
@@ -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;