]> git.sur5r.net Git - bacula/bacula/commitdiff
Minor changes in formating and to address_conf.c
authorKern Sibbald <kern@sibbald.com>
Tue, 3 Aug 2004 11:26:30 +0000 (11:26 +0000)
committerKern Sibbald <kern@sibbald.com>
Tue, 3 Aug 2004 11:26:30 +0000 (11:26 +0000)
git-svn-id: https://bacula.svn.sourceforge.net/svnroot/bacula/trunk@1506 91ce42f0-d328-0410-95d8-f526ca767f89

bacula/src/lib/address_conf.c
bacula/src/lib/address_conf.h

index d978b18fc2fdc14fde9c4b6c81c4d155099d6be4..82a2e6efd5327abd3261c6762a44e7307938eb6f 100644 (file)
@@ -41,7 +41,7 @@ IPADDR::IPADDR(const IPADDR &src) : type(src.type)
 IPADDR::IPADDR(int af) : type(R_EMPTY)
 {
   if (!(af  == AF_INET6 || af  == AF_INET)) {
-       Emsg1(M_ERROR_TERM, 0, _("Only ipv4 and ipv6 are supported(%d)\n"), af);
+     Emsg1(M_ERROR_TERM, 0, _("Only ipv4 and ipv6 are supported(%d)\n"), af);
   }
   saddr  = &buf.dontuse;
   saddr4 = &buf.dontuse4; 
@@ -50,11 +50,11 @@ IPADDR::IPADDR(int af) : type(R_EMPTY)
 #endif
   saddr->sa_family = af;
   if (af  == AF_INET) {
-       saddr4->sin_port = 0xffff;
+     saddr4->sin_port = 0xffff;
   }
 #ifdef HAVE_IPV6
   else {
-       saddr6->sin6_port = 0xffff;
+     saddr6->sin6_port = 0xffff;
   }
 #endif
 #ifdef HAVE_SA_LEN
@@ -64,98 +64,102 @@ IPADDR::IPADDR(int af) : type(R_EMPTY)
   saddr->sa_len = sizeof(sockaddr_in);
 #endif
 #endif
-  set_addr_any(); 
+   set_addr_any(); 
 } 
 
 void IPADDR::set_type(i_type o)
 {
-  type = o;
+   type = o;
 }
 
 IPADDR::i_type IPADDR::get_type() const
 {
-  return type;
+   return type;
 }
 
 unsigned short IPADDR::get_port() const
 {
- unsigned short port = 0;
- if (saddr->sa_family == AF_INET) {
-   port = saddr4->sin_port;
- }
  unsigned short port = 0;
  if (saddr->sa_family == AF_INET) {
+      port = saddr4->sin_port;
  }
 #ifdef HAVE_IPV6
- else {
-   port = saddr6->sin6_port;
- }
  else {
+      port = saddr6->sin6_port;
  }
 #endif
-  return port;
+    return port;
 }
 
 void IPADDR::set_port(unsigned short port)
 {
- if (saddr->sa_family == AF_INET) {
-   saddr4->sin_port = port;
- }
  if (saddr->sa_family == AF_INET) {
+      saddr4->sin_port = port;
  }
 #ifdef HAVE_IPV6
- else {
-   saddr6->sin6_port = port;
- }
  else {
+      saddr6->sin6_port = port;
  }
 #endif
 }
 
 int IPADDR::get_family() const
 {
-  return saddr->sa_family;
-}      
+    return saddr->sa_family;
+}       
 
 struct sockaddr *IPADDR::get_sockaddr()
 {
-  return saddr;
+   return saddr;
 }
 
 int IPADDR::get_sockaddr_len()
 {
-  return saddr->sa_family == AF_INET ? sizeof(*saddr4) : sizeof(*saddr6);
+#ifdef HAVE_IPV6
+   return saddr->sa_family == AF_INET ? sizeof(*saddr4) : sizeof(*saddr6);
+#else
+   return sizeof(*saddr4);
+#endif
 }
 void IPADDR::copy_addr(IPADDR *src)
 {
-  if (saddr->sa_family == AF_INET) {
-    saddr4->sin_addr.s_addr = src->saddr4->sin_addr.s_addr;
-  }
+   if (saddr->sa_family == AF_INET) {
+      saddr4->sin_addr.s_addr = src->saddr4->sin_addr.s_addr;
+   }
 #ifdef HAVE_IPV6
-  else {
-    saddr6->sin6_addr = src->saddr6->sin6_addr;
-  }
+   else {
+      saddr6->sin6_addr = src->saddr6->sin6_addr;
+   }
 #endif
 } 
 
 void IPADDR::set_addr_any()
 {
-  if (saddr->sa_family == AF_INET) {
-    saddr4->sin_addr.s_addr = INADDR_ANY;
-  }
+   if (saddr->sa_family == AF_INET) {
+      saddr4->sin_addr.s_addr = INADDR_ANY;
+   }
 #ifdef HAVE_IPV6
-  else {
-    saddr6->sin6_addr= in6addr_any;
-  }
+   else {
+     saddr6->sin6_addr= in6addr_any;
+   }
 #endif
 }
 
 void IPADDR::set_addr4(struct in_addr *ip4)
 { 
-  if (saddr->sa_family != AF_INET) {
-     Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv6 address to a ipv4(%d)\n"), saddr->sa_family);
-  }
-  saddr4->sin_addr = *ip4;
+   if (saddr->sa_family != AF_INET) {
+      Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv6 address to a ipv4(%d)\n"), saddr->sa_family);
+   }
+   saddr4->sin_addr = *ip4;
 }
 
 #ifdef HAVE_IPV6
 void IPADDR::set_addr6(struct in6_addr *ip6)
 { 
-  if (saddr->sa_family != AF_INET6) {
-     Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv4 address to a ipv6(%d)\n"), saddr->sa_family);
-  }
-  saddr6->sin6_addr = *ip6;
+   if (saddr->sa_family != AF_INET6) {
+      Emsg1(M_ERROR_TERM, 0, _("It was tried to assign a ipv4 address to a ipv6(%d)\n"), saddr->sa_family);
+   }
+   saddr6->sin6_addr = *ip6;
 }
 #endif
 
@@ -163,35 +167,41 @@ const char *IPADDR::get_address(char *outputbuf, int outlen)
 {
    outputbuf[0] = '\0';
 #if defined(HAVE_INET_NTOP) && defined(HAVE_IPV6)
-   inet_ntop(saddr->sa_family, 
-                        saddr->sa_family == AF_INET ?
-                                (void*)&(saddr4->sin_addr) : (void*)&(saddr6->sin6_addr),
-                        outputbuf,
-                        outlen);
+   inet_ntop(saddr->sa_family, saddr->sa_family == AF_INET ?
+              (void*)&(saddr4->sin_addr) : (void*)&(saddr6->sin6_addr),
+              outputbuf, outlen);
 #else
-   strcpy(outputbuf, inet_ntoa(saddr4->sin_addr));
+   bstrncpy(outputbuf, inet_ntoa(saddr4->sin_addr), outlen);
 #endif
    return outputbuf;
 }
 
+const char *IPADDR::build_address_str(char *buf, int blen) 
+{
+   char tmp[1024];
+   snprintf(buf, blen, "host[%s:%s:%hu] ",
+            get_family() == AF_INET ? "ipv4" : "ipv6",
+            get_address(tmp, sizeof(tmp) - 1), ntohs(get_port()));
+   return buf;
+}
 
 const char *build_addresses_str(dlist *addrs, char *buf, int blen) 
 {
-      if (!addrs->size()) {
-         bstrncpy(buf, "", blen);
-         return buf;
-      }
-      char *work = buf;
-      IPADDR *p;
-      foreach_dlist(p, addrs) {
-         char tmp[1024];
-         int len = snprintf(work, blen, "%s", p->build_address_str(tmp, sizeof(tmp)));
-         if (len < 0)
-            break;
-         work += len;
-         blen -= len;
-      }
+   if (!addrs->size()) {
+      bstrncpy(buf, "", blen);
       return buf;
+   }
+   char *work = buf;
+   IPADDR *p;
+   foreach_dlist(p, addrs) {
+      char tmp[1024];
+      int len = snprintf(work, blen, "%s", p->build_address_str(tmp, sizeof(tmp)));
+      if (len < 0)
+         break;
+      work += len;
+      blen -= len;
+   }
+   return buf;
 }
 
 const char *get_first_address(dlist * addrs, char *outputbuf, int outlen)
@@ -226,7 +236,7 @@ void init_default_addresses(dlist ** out, int port)
 }
 
 int add_address(dlist ** out, IPADDR::i_type type, unsigned short defaultport, int family,
-               const char *hostname_str, const char *port_str, char **errstr)
+                const char *hostname_str, const char *port_str, char **errstr)
 {
    IPADDR *iaddr;
    IPADDR *jaddr;
@@ -241,22 +251,22 @@ int add_address(dlist ** out, IPADDR::i_type type, unsigned short defaultport, i
    }
 
    type = (type == IPADDR::R_SINGLE_PORT
-          || type == IPADDR::R_SINGLE_ADDR) ? IPADDR::R_SINGLE : type;
+           || type == IPADDR::R_SINGLE_ADDR) ? IPADDR::R_SINGLE : type;
    if (type != IPADDR::R_DEFAULT) {
       IPADDR *def = 0;
       foreach_dlist(iaddr, addrs) {
-        if (iaddr->get_type() == IPADDR::R_DEFAULT) {
-           def = iaddr;
-        } else if (iaddr->get_type() != type) {
-           *errstr = (char *)malloc(1024);
-           bsnprintf(*errstr, 1023,
+         if (iaddr->get_type() == IPADDR::R_DEFAULT) {
+            def = iaddr;
+         } else if (iaddr->get_type() != type) {
+            *errstr = (char *)malloc(1024);
+            bsnprintf(*errstr, 1023,
                       "the old style addresses could mixed with new style");
-           return 0;
-        }
+            return 0;
+         }
       }
       if (def) {
-        addrs->remove(def);
-        delete def;
+         addrs->remove(def);
+         delete def;
       }
    }
 
@@ -266,16 +276,16 @@ int add_address(dlist ** out, IPADDR::i_type type, unsigned short defaultport, i
    } else {
       int pnum = atol(port_str);
       if (0 < pnum && pnum < 0xffff) {
-        port = htons(pnum);
+         port = htons(pnum);
       } else {
          struct servent *s = getservbyname(port_str, "tcp");
-        if (s) {
-           port = s->s_port;
-        } else {
-           *errstr = (char *)malloc(1024);
+         if (s) {
+            port = s->s_port;
+         } else {
+            *errstr = (char *)malloc(1024);
             bsnprintf(*errstr, 1023, "can't resolve service(%s)", port_str);
-           return 0;
-        }
+            return 0;
+         }
       }
    }
 
@@ -284,45 +294,45 @@ int add_address(dlist ** out, IPADDR::i_type type, unsigned short defaultport, i
    if (!hostaddrs) {
       *errstr = (char *)malloc(1024);
       bsnprintf(*errstr, 1023, "can't resolve hostname(%s) %s", hostname_str,
-               myerrstr);
+                myerrstr);
       return 0;
    }
 
    if (intype == IPADDR::R_SINGLE_PORT || intype == IPADDR::R_SINGLE_ADDR) {
       IPADDR *addr;
       if (addrs->size()) {
-        addr = (IPADDR *) addrs->first();
+         addr = (IPADDR *) addrs->first();
       } else {
-        addr = new IPADDR(family);
-        addr->set_type(type);
-        addr->set_port(defaultport);
-        addr->set_addr_any();
-        addrs->append(addr);
+         addr = new IPADDR(family);
+         addr->set_type(type);
+         addr->set_port(defaultport);
+         addr->set_addr_any();
+         addrs->append(addr);
       }
       if (intype == IPADDR::R_SINGLE_PORT) {
-        addr->set_port(port);
+         addr->set_port(port);
       }
       if (intype == IPADDR::R_SINGLE_ADDR) {
-        addr->copy_addr((IPADDR *) (hostaddrs->first()));
+         addr->copy_addr((IPADDR *) (hostaddrs->first()));
       }
    } else {
       foreach_dlist(iaddr, hostaddrs) {
-        IPADDR *clone;
-        /* for duplicates */
-        foreach_dlist(jaddr, addrs) {
-           if (iaddr->get_sockaddr_len() == jaddr->get_sockaddr_len() &&
+         IPADDR *clone;
+         /* for duplicates */
+         foreach_dlist(jaddr, addrs) {
+            if (iaddr->get_sockaddr_len() == jaddr->get_sockaddr_len() &&
             !memcmp(iaddr->get_sockaddr(), jaddr->get_sockaddr(), 
                     iaddr->get_sockaddr_len()))
-               {
-              goto skip;          /* no price */
-           }
-        }
-        clone = new IPADDR(*iaddr);
-        clone->set_type(type);
-        clone->set_port(port);
-        addrs->append(clone);
+                {
+               goto skip;          /* no price */
+            }
+         }
+         clone = new IPADDR(*iaddr);
+         clone->set_type(type);
+         clone->set_port(port);
+         addrs->append(clone);
        skip:
-        continue;
+         continue;
       }
    }
    free_addresses(hostaddrs);
@@ -340,35 +350,35 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
 
    /*
     *   =  { [[ip|ipv4|ipv6] = { [[addr|port] = [^ ]+[\n;]+] }]+ }
-    *  or my tests
-    *  positiv
-    *  = { ip = { addr = 1.2.3.4; port = 1205; } ipv4 = { addr = 1.2.3.4; port = http; } }
-    *  = { ip = { 
-    *        addr = 1.2.3.4; port = 1205; } 
-    *    ipv4 = { 
-    *        addr = 1.2.3.4; port = http; } 
-    *    ipv6 = { 
-    *      addr = 1.2.3.4; 
-    *      port = 1205;
-    *    } 
-    *    ip = {
-    *      addr = 1.2.3.4
-    *      port = 1205
-    *    } 
-    *    ip = {
-    *      addr = 1.2.3.4
-    *    } 
-    *    ip = {
-    *      addr = 2001:220:222::2
-    *    } 
-    *    ip = {
-    *      addr = bluedot.thun.net
-    (    } 
-    *  }
-    *  negativ
-    *  = { ip = { } }
-    *  = { ipv4 { addr = doof.nowaytoheavenxyz.uhu; } }
-    *  = { ipv4 { port = 4711 } }
+    *   or my tests
+    *   positiv
+    *   = { ip = { addr = 1.2.3.4; port = 1205; } ipv4 = { addr = 1.2.3.4; port = http; } }
+    *   = { ip = { 
+    *         addr = 1.2.3.4; port = 1205; } 
+    *     ipv4 = { 
+    *         addr = 1.2.3.4; port = http; } 
+    *     ipv6 = { 
+    *       addr = 1.2.3.4; 
+    *       port = 1205;
+    *     
+    *     ip = {
+    *       addr = 1.2.3.4
+    *       port = 1205
+    *     
+    *     ip = {
+    *       addr = 1.2.3.4
+    *     
+    *     ip = {
+    *       addr = 2001:220:222::2
+    *     
+    *     ip = {
+    *       addr = bluedot.thun.net
+    (     
+    *   }
+    *   negativ
+    *   = { ip = { } }
+    *   = { ipv4 { addr = doof.nowaytoheavenxyz.uhu; } }
+    *   = { ipv4 { port = 4711 } }
     */
 
    token = skip_to_next_not_eol(lc);
@@ -385,11 +395,11 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
          scan_err1(lc, _("Expected a string, got: %s"), lc->str);
       }
       if (!strcmp("ip", lc->str) || !strcmp("ipv4", lc->str)) {
-        family = AF_INET;
+         family = AF_INET;
       }
 #ifdef HAVE_IPV6
       else if (!strcmp("ipv6", lc->str)) {
-        family = AF_INET6;
+         family = AF_INET6;
       }
 #endif
       else {
@@ -407,50 +417,50 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
       exist = EMPTYLINE;
       port_str[0] = hostname_str[0] = '\0';
       do {
-        if (token != T_IDENTIFIER) {
+         if (token != T_IDENTIFIER) {
             scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str);
-        }
+         }
          if (!strcmp("port", lc->str)) {
-           next_line = PORTLINE;
-           if (exist & PORTLINE) {
+            next_line = PORTLINE;
+            if (exist & PORTLINE) {
                scan_err0(lc, _("Only one port per address block"));
-           }
-           exist |= PORTLINE;
+            }
+            exist |= PORTLINE;
          } else if (!strcmp("addr", lc->str)) {
-           next_line = ADDRLINE;
-           if (exist & ADDRLINE) {
+            next_line = ADDRLINE;
+            if (exist & ADDRLINE) {
                scan_err0(lc, _("Only one addr per address block"));
-           }
-           exist |= ADDRLINE;
-        } else {
+            }
+            exist |= ADDRLINE;
+         } else {
             scan_err1(lc, _("Expected a identifier [addr|port], got: %s"), lc->str);
-        }
-        token = lex_get_token(lc, T_ALL);
-        if (token != T_EQUALS) {
+         }
+         token = lex_get_token(lc, T_ALL);
+         if (token != T_EQUALS) {
             scan_err1(lc, _("Expected a equal =, got: %s"), lc->str);
-        }
-        token = lex_get_token(lc, T_ALL);
-        switch (next_line) {
-        case PORTLINE:
-           if (!
-               (token == T_UNQUOTED_STRING || token == T_NUMBER
-                || token == T_IDENTIFIER)) {
+         }
+         token = lex_get_token(lc, T_ALL);
+         switch (next_line) {
+         case PORTLINE:
+            if (!
+                (token == T_UNQUOTED_STRING || token == T_NUMBER
+                 || token == T_IDENTIFIER)) {
                scan_err1(lc, _("Expected a number or a string, got: %s"), lc->str);
-           }
-           bstrncpy(port_str, lc->str, sizeof(port_str));
-           break;
-        case ADDRLINE:
-           if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) {
+            }
+            bstrncpy(port_str, lc->str, sizeof(port_str));
+            break;
+         case ADDRLINE:
+            if (!(token == T_UNQUOTED_STRING || token == T_IDENTIFIER)) {
                scan_err1(lc, _("Expected a ipnumber or a hostname, got: %s"),
-                        lc->str);
-           }
-           bstrncpy(hostname_str, lc->str, sizeof(hostname_str));
-           break;
-        case EMPTYLINE:
+                         lc->str);
+            }
+            bstrncpy(hostname_str, lc->str, sizeof(hostname_str));
+            break;
+         case EMPTYLINE:
             scan_err0(lc, _("Statemachine missmatch"));
-           break;
-        }
-        token = skip_to_next_not_eol(lc);
+            break;
+         }
+         token = skip_to_next_not_eol(lc);
       } while (token == T_IDENTIFIER);
       if (token != T_EOB) {
          scan_err1(lc, _("Expected a end of block }, got: %s"), lc->str);
@@ -458,11 +468,11 @@ void store_addresses(LEX * lc, RES_ITEM * item, int index, int pass)
 
       char *errstr;
       if (!add_address
-         ((dlist **) (item->value), IPADDR::R_MULTIPLE, htons(item->default_value),
-          family, hostname_str, port_str, &errstr)) {
+          ((dlist **) (item->value), IPADDR::R_MULTIPLE, htons(item->default_value),
+           family, hostname_str, port_str, &errstr)) {
          scan_err3(lc, _("Can't add hostname(%s) and port(%s) to addrlist (%s)"),
-                  hostname_str, port_str, errstr);
-        free(errstr);
+                   hostname_str, port_str, errstr);
+         free(errstr);
       }
       token = skip_to_next_not_eol(lc);
    } while ((token == T_IDENTIFIER || token == T_UNQUOTED_STRING));
@@ -479,7 +489,7 @@ void store_addresses_address(LEX * lc, RES_ITEM * item, int index, int pass)
    }
    char *errstr;
    if (!add_address((dlist **) (item->value), IPADDR::R_SINGLE_ADDR,
-                   htons(item->default_value), AF_INET, lc->str, 0, &errstr)) {
+                    htons(item->default_value), AF_INET, lc->str, 0, &errstr)) {
       scan_err2(lc, _("can't add port (%s) to (%s)"), lc->str, errstr);
       free(errstr);
    }
@@ -493,7 +503,7 @@ void store_addresses_port(LEX * lc, RES_ITEM * item, int index, int pass)
    }
    char *errstr;
    if (!add_address((dlist **) (item->value), IPADDR::R_SINGLE_PORT,
-                   htons(item->default_value), AF_INET, 0, lc->str, &errstr)) {
+                    htons(item->default_value), AF_INET, 0, lc->str, &errstr)) {
       scan_err2(lc, _("can't add port (%s) to (%s)"), lc->str, errstr);
       free(errstr);
    }
@@ -510,5 +520,3 @@ void free_addresses(dlist * addrs)
 }
 
 
-
-
index cc148404cb20ba652e751272be0fc060d51e26fc..6f6c554a2f5f5b42d03c69cae149b7597f01bf99 100644 (file)
 class IPADDR {
  public:
    typedef enum { R_SINGLE, R_SINGLE_PORT, R_SINGLE_ADDR, R_MULTIPLE,
-      R_DEFAULT, R_EMPTY
+                  R_DEFAULT, R_EMPTY
    } i_type;
    IPADDR(int af);
    IPADDR(const IPADDR & src);
  private:
-   IPADDR() {
-      /* block this construction */ 
-   } 
+   IPADDR() {  /* block this construction */ } 
    i_type type;
    union {
       struct sockaddr dontuse;
@@ -66,13 +64,8 @@ class IPADDR {
 #endif
    const char *get_address(char *outputbuf, int outlen);
 
-   const char *build_address_str(char *buf, int blen) {
-      char tmp[1024];
-      snprintf(buf, blen, "host[%s:%s:%hu] ",
-                get_family() == AF_INET ? "ipv4" : "ipv6",
-                get_address(tmp, sizeof(tmp) - 1), ntohs(get_port()));
-      return buf;
-   }
+   const char *build_address_str(char *buf, int blen);
+
    /* private */
    dlink link;
 };
@@ -91,4 +84,3 @@ extern const char *get_first_address(dlist * addrs, char *outputbuf, int outlen)
 extern int get_first_port(dlist * addrs);
 
 extern const char *build_addresses_str(dlist *addrs, char *buf, int blen);
-