diff options
Diffstat (limited to 'libglusterfs')
| -rw-r--r-- | libglusterfs/src/common-utils.c | 44 | ||||
| -rw-r--r-- | libglusterfs/src/common-utils.h | 2 | ||||
| -rw-r--r-- | libglusterfs/src/list.h | 12 | ||||
| -rw-r--r-- | libglusterfs/src/mem-types.h | 6 | 
4 files changed, 63 insertions, 1 deletions
diff --git a/libglusterfs/src/common-utils.c b/libglusterfs/src/common-utils.c index 9375c5d407a..b44c1d0b370 100644 --- a/libglusterfs/src/common-utils.c +++ b/libglusterfs/src/common-utils.c @@ -1939,6 +1939,50 @@ out:          return ret;  } +/** + * gf_sock_union_equal_addr - check if two given gf_sock_unions have same addr + * + * @param a - first sock union + * @param b - second sock union + * @return _gf_true if a and b have same ipv{4,6} addr, _gf_false otherwise + */ +gf_boolean_t +gf_sock_union_equal_addr (union gf_sock_union *a, +                          union gf_sock_union *b) +{ +        if (!a || !b) { +                gf_log ("common-utils", GF_LOG_ERROR, "Invalid arguments" +                        " to gf_sock_union_equal_addr"); +                return _gf_false; +        } + +        if (a->storage.ss_family != b->storage.ss_family) +                return _gf_false; + +        switch (a->storage.ss_family) { +        case AF_INET: +                if (a->sin.sin_addr.s_addr == b->sin.sin_addr.s_addr) +                        return _gf_true; +                else +                        return _gf_false; + +        case AF_INET6: +                if (memcmp ((void *)(&a->sin6.sin6_addr), +                            (void *)(&b->sin6.sin6_addr), +                            sizeof (a->sin6.sin6_addr))) +                        return _gf_false; +                else +                        return _gf_true; + +        default: +                gf_log ("common-utils", GF_LOG_DEBUG, +                        "Unsupported/invalid address family"); +                break; +        } + +        return _gf_false; +} +  /*Thread safe conversion function*/  char *  uuid_utoa (uuid_t uuid) diff --git a/libglusterfs/src/common-utils.h b/libglusterfs/src/common-utils.h index e1193031c9d..1fb36d658f7 100644 --- a/libglusterfs/src/common-utils.h +++ b/libglusterfs/src/common-utils.h @@ -557,6 +557,8 @@ char valid_internet_address (char *address, gf_boolean_t wildcard_acc);  char valid_ipv4_wildcard_check (char *address);  char valid_ipv6_wildcard_check (char *address);  char valid_wildcard_internet_address (char *address); +gf_boolean_t gf_sock_union_equal_addr (union gf_sock_union *a, +                                       union gf_sock_union *b);  char *uuid_utoa (uuid_t uuid);  char *uuid_utoa_r (uuid_t uuid, char *dst); diff --git a/libglusterfs/src/list.h b/libglusterfs/src/list.h index 35fccdf25a5..7f3712b51b4 100644 --- a/libglusterfs/src/list.h +++ b/libglusterfs/src/list.h @@ -175,4 +175,16 @@ list_append_init (struct list_head *list, struct list_head *head)  	     &pos->member != (head); 					\  	     pos = n, n = list_entry(n->member.next, typeof(*n), member)) +#define list_for_each_entry_reverse(pos, head, member)                  \ +	for (pos = list_entry((head)->prev, typeof(*pos), member);      \ +	     &pos->member != (head);                                    \ +	     pos = list_entry(pos->member.prev, typeof(*pos), member)) + + +#define list_for_each_entry_safe_reverse(pos, n, head, member)          \ +	for (pos = list_entry((head)->prev, typeof(*pos), member),      \ +	        n = list_entry(pos->member.prev, typeof(*pos), member); \ +	     &pos->member != (head);                                    \ +	     pos = n, n = list_entry(n->member.prev, typeof(*n), member)) +  #endif /* _LLIST_H */ diff --git a/libglusterfs/src/mem-types.h b/libglusterfs/src/mem-types.h index 015cd1a3b0e..4c78f46071e 100644 --- a/libglusterfs/src/mem-types.h +++ b/libglusterfs/src/mem-types.h @@ -104,6 +104,10 @@ enum gf_common_mem_types_ {          gf_common_mt_eh_t                 = 88,          gf_common_mt_store_handle_t       = 89,          gf_common_mt_store_iter_t         = 90, -        gf_common_mt_end                  = 91 +        gf_common_mt_drc_client_t         = 91, +        gf_common_mt_drc_globals_t        = 92, +        gf_common_mt_drc_rbtree_node_t    = 93, +        gf_common_mt_iov_base_t           = 94, +        gf_common_mt_end                  = 95,  };  #endif  | 
