]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
ctdb-common: Drop function parse_ip_mask() and supporting functions
authorMartin Schwenke <martin@meltin.net>
Thu, 7 Jun 2018 21:33:32 +0000 (07:33 +1000)
committerAmitay Isaacs <amitay@samba.org>
Fri, 27 Jul 2018 03:45:21 +0000 (05:45 +0200)
Signed-off-by: Martin Schwenke <martin@meltin.net>
Reviewed-by: Amitay Isaacs <amitay@gmail.com>
ctdb/common/system_socket.c
ctdb/common/system_socket.h

index 843e5d74816f69902942a7184eb304bb26e8146e..562b2bf1aafff73d8914d5f86b675114fb4d9e69 100644 (file)
@@ -112,141 +112,6 @@ bool ctdb_sys_have_ip(ctdb_sock_addr *_addr)
        return ret == 0;
 }
 
-static bool parse_ipv4(const char *s, unsigned port, struct sockaddr_in *sin)
-{
-       sin->sin_family = AF_INET;
-       sin->sin_port   = htons(port);
-
-       if (inet_pton(AF_INET, s, &sin->sin_addr) != 1) {
-               DBG_ERR("Failed to translate %s into sin_addr\n", s);
-               return false;
-       }
-
-#ifdef HAVE_SOCK_SIN_LEN
-       sin->sin_len = sizeof(*sin);
-#endif
-       return true;
-}
-
-static bool parse_ipv6(const char *s,
-                      const char *ifaces,
-                      unsigned port,
-                      ctdb_sock_addr *saddr)
-{
-       saddr->ip6.sin6_family   = AF_INET6;
-       saddr->ip6.sin6_port     = htons(port);
-       saddr->ip6.sin6_flowinfo = 0;
-       saddr->ip6.sin6_scope_id = 0;
-
-       if (inet_pton(AF_INET6, s, &saddr->ip6.sin6_addr) != 1) {
-               DBG_ERR("Failed to translate %s into sin6_addr\n", s);
-               return false;
-       }
-
-       if (ifaces && IN6_IS_ADDR_LINKLOCAL(&saddr->ip6.sin6_addr)) {
-               if (strchr(ifaces, ',')) {
-                       DBG_ERR("Link local address %s "
-                               "is specified for multiple ifaces %s\n",
-                               s, ifaces);
-                       return false;
-               }
-               saddr->ip6.sin6_scope_id = if_nametoindex(ifaces);
-       }
-
-#ifdef HAVE_SOCK_SIN6_LEN
-       saddr->ip6.sin6_len = sizeof(*saddr);
-#endif
-       return true;
-}
-
-static bool parse_ip(const char *addr,
-                    const char *ifaces,
-                    unsigned port,
-                    ctdb_sock_addr *saddr)
-{
-       char *p;
-       bool ret;
-
-       ZERO_STRUCTP(saddr); /* valgrind :-) */
-
-       /*
-        * IPv4 or IPv6 address?
-        *
-        * Use rindex() because we need the right-most ':' below for
-        * IPv4-mapped IPv6 addresses anyway...
-        */
-       p = rindex(addr, ':');
-       if (p == NULL) {
-               ret = parse_ipv4(addr, port, &saddr->ip);
-       } else {
-               uint8_t ipv4_mapped_prefix[12] = {
-                       0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0xff, 0xff
-               };
-
-               ret = parse_ipv6(addr, ifaces, port, saddr);
-               if (! ret) {
-                       return ret;
-               }
-
-               /*
-                * Check for IPv4-mapped IPv6 address
-                * (e.g. ::ffff:192.0.2.128) - reparse as IPv4 if
-                * necessary
-                */
-               if (memcmp(&saddr->ip6.sin6_addr.s6_addr[0],
-                          ipv4_mapped_prefix,
-                          sizeof(ipv4_mapped_prefix)) == 0) {
-                       /* Reparse as IPv4 */
-                       ret = parse_ipv4(p+1, port, &saddr->ip);
-               }
-       }
-
-       return ret;
-}
-
-/*
- * Parse an ip/mask pair
- */
-bool parse_ip_mask(const char *str,
-                  const char *ifaces,
-                  ctdb_sock_addr *addr,
-                  unsigned *mask)
-{
-       char *p;
-       char s[64]; /* Much longer than INET6_ADDRSTRLEN */
-       char *endp = NULL;
-       ssize_t len;
-       bool ret;
-
-       ZERO_STRUCT(*addr);
-
-       len = strlcpy(s, str, sizeof(s));
-       if (len >= sizeof(s)) {
-               DBG_ERR("Address %s is unreasonably long\n", str);
-               return false;
-       }
-
-       p = rindex(s, '/');
-       if (p == NULL) {
-               DBG_ERR("Address %s does not contain a mask\n", s);
-               return false;
-       }
-
-       *mask = strtoul(p+1, &endp, 10);
-       if (endp == NULL || *endp != 0) {
-               /* trailing garbage */
-               DBG_ERR("Trailing garbage after the mask in %s\n", s);
-               return false;
-       }
-       *p = 0;
-
-
-       /* now is this a ipv4 or ipv6 address ?*/
-       ret = parse_ip(s, ifaces, 0, addr);
-
-       return ret;
-}
-
 /*
  * simple TCP checksum - assumes data is multiple of 2 bytes long
  */
index eb2c6f7b6ae8e660a7457cf2639a1222f5bf70f6..065c53cb2a8ca574c74816d8b97436d4f1d49c81 100644 (file)
 
 bool ctdb_sys_have_ip(ctdb_sock_addr *addr);
 
-bool parse_ip_mask(const char *str,
-                  const char *ifaces,
-                  ctdb_sock_addr *addr,
-                  unsigned *mask);
-
 int ctdb_sys_send_arp(const ctdb_sock_addr *addr, const char *iface);
 
 int ctdb_sys_send_tcp(const ctdb_sock_addr *dest,