diff --git a/channels/chan_iax2.c b/channels/chan_iax2.c index af38cea8fb..3e53099704 100644 --- a/channels/chan_iax2.c +++ b/channels/chan_iax2.c @@ -645,10 +645,10 @@ static struct ast_iax2_queue { #define MAX_PEER_BUCKETS 1 /* #define MAX_PEER_BUCKETS 563 */ #endif -static ao2_container *peers; +static struct ao2_container *peers; #define MAX_USER_BUCKETS MAX_PEER_BUCKETS -static ao2_container *users; +static struct ao2_container *users; static struct ast_firmware_list { struct iax_firmware *wares; @@ -1152,7 +1152,7 @@ static int iax2_getpeername(struct sockaddr_in sin, char *host, int len) { struct iax2_peer *peer = NULL; int res = 0; - ao2_iterator i; + struct ao2_iterator i; i = ao2_iterator_init(peers, 0); while ((peer = ao2_iterator_next(&i))) { @@ -2283,7 +2283,7 @@ static char *complete_iax2_show_peer(const char *line, const char *word, int pos struct iax2_peer *peer; char *res = NULL; int wordlen = strlen(word); - ao2_iterator i; + struct ao2_iterator i; /* 0 - iax2; 1 - show; 2 - peer; 3 - */ if (pos != 3) @@ -3489,7 +3489,7 @@ static int iax2_getpeertrunk(struct sockaddr_in sin) { struct iax2_peer *peer; int res = 0; - ao2_iterator i; + struct ao2_iterator i; i = ao2_iterator_init(peers, 0); while ((peer = ao2_iterator_next(&i))) { @@ -4218,7 +4218,7 @@ static int iax2_show_users(int fd, int argc, char *argv[]) struct iax2_user *user = NULL; char auth[90]; char *pstr = ""; - ao2_iterator i; + struct ao2_iterator i; switch (argc) { case 5: @@ -4276,7 +4276,7 @@ static int __iax2_show_peers(int manager, int fd, struct mansession *s, int argc int online_peers = 0; int offline_peers = 0; int unmonitored_peers = 0; - ao2_iterator i; + struct ao2_iterator i; #define FORMAT2 "%-15.15s %-15.15s %s %-15.15s %-8s %s %-10s%s" #define FORMAT "%-15.15s %-15.15s %s %-15.15s %-5d%s %s %-10s%s" @@ -4841,7 +4841,7 @@ static int check_access(int callno, struct sockaddr_in *sin, struct iax_ies *ies int bestscore = 0; int gotcapability = 0; struct ast_variable *v = NULL, *tmpvar = NULL; - ao2_iterator i; + struct ao2_iterator i; if (!iaxs[callno]) return res; @@ -5432,7 +5432,7 @@ static int authenticate_reply(struct chan_iax2_pvt *p, struct sockaddr_in *sin, /* Normal password authentication */ res = authenticate(p->challenge, override, okey, authmethods, &ied, sin, &p->ecx, &p->dcx); } else { - ao2_iterator i = ao2_iterator_init(peers, 0); + struct ao2_iterator i = ao2_iterator_init(peers, 0); while ((peer = ao2_iterator_next(&i))) { if ((ast_strlen_zero(p->peer) || !strcmp(p->peer, peer->name)) /* No peer specified at our end, or this is the peer */ @@ -9418,7 +9418,7 @@ static void delete_users(void) static void prune_users(void) { struct iax2_user *user; - ao2_iterator i; + struct ao2_iterator i; i = ao2_iterator_init(users, 0); while ((user = ao2_iterator_next(&i))) { @@ -9432,7 +9432,7 @@ static void prune_users(void) static void prune_peers(void) { struct iax2_peer *peer; - ao2_iterator i; + struct ao2_iterator i; i = ao2_iterator_init(peers, 0); while ((peer = ao2_iterator_next(&i))) { diff --git a/include/asterisk/astobj2.h b/include/asterisk/astobj2.h index d4b3f2b638..484cbd92e0 100644 --- a/include/asterisk/astobj2.h +++ b/include/asterisk/astobj2.h @@ -87,7 +87,7 @@ parameters. At the moment, this is done as follows: Sample Usage: \code - ao2_container *c; + struct ao2_container *c; c = ao2_container_alloc(MAX_BUCKETS, my_hash_fn, my_cmp_fn); @@ -239,8 +239,8 @@ Operations on container include: iterate on a container this is done with the following sequence - ao2_container *c = ... // our container - ao2_iterator i; + struct ao2_container *c = ... // our container + struct ao2_iterator i; void *o; i = ao2_iterator_init(c, flags); @@ -320,14 +320,7 @@ typedef int (*ao2_callback_fn)(void *obj, void *arg, int flags); /*! * Here start declarations of containers. */ - -/*! - * This structure contains the total number of buckets - * and variable size array of object pointers. - * It is opaque, defined in astobj2.c, so we only need - * a type declaration. - */ -typedef struct __ao2_container ao2_container; +struct ao2_container; /*! * Allocate and initialize a container @@ -343,13 +336,13 @@ typedef struct __ao2_container ao2_container; * * destructor is set implicitly. */ -ao2_container *ao2_container_alloc(const uint n_buckets, +struct ao2_container *ao2_container_alloc(const uint n_buckets, ao2_hash_fn hash_fn, ao2_callback_fn cmp_fn); /*! * Returns the number of elements in a container. */ -int ao2_container_count(ao2_container *c); +int ao2_container_count(struct ao2_container *c); /* * Here we have functions to manage objects. @@ -375,8 +368,8 @@ int ao2_container_count(ao2_container *c); * matching behavior doesn't change. */ #define ao2_link(c, o) __ao2_link(c, o, 0) -void *__ao2_link(ao2_container *c, void *newobj, int iax2_hack); -void *ao2_unlink(ao2_container *c, void *newobj); +void *__ao2_link(struct ao2_container *c, void *newobj, int iax2_hack); +void *ao2_unlink(struct ao2_container *c, void *newobj); /*! \struct Used as return value if the flag OBJ_MULTIPLE is set */ struct ao2_list { @@ -432,8 +425,8 @@ struct ao2_list { * be used to free the additional reference possibly created by this function. */ /* XXX order of arguments to find */ -void *ao2_find(ao2_container *c, void *arg, enum search_flags flags); -void *ao2_callback(ao2_container *c, +void *ao2_find(struct ao2_container *c, void *arg, enum search_flags flags); +void *ao2_callback(struct ao2_container *c, enum search_flags flags, ao2_callback_fn cb_fn, void *arg); @@ -472,8 +465,8 @@ int ao2_match_by_addr(void *user_data, void *arg, int flags); * * \code * - * ao2_container *c = ... // the container we want to iterate on - * ao2_iterator i; + * struct ao2_container *c = ... // the container we want to iterate on + * struct ao2_iterator i; * struct my_obj *o; * * i = ao2_iterator_init(c, flags); @@ -510,9 +503,9 @@ int ao2_match_by_addr(void *user_data, void *arg, int flags); * A freshly-initialized iterator has bucket=0, version = 0. */ -struct __ao2_iterator { +struct ao2_iterator { /*! the container */ - ao2_container *c; + struct ao2_container *c; /*! operation flags */ int flags; #define F_AO2I_DONTLOCK 1 /*!< don't lock when iterating */ @@ -524,11 +517,10 @@ struct __ao2_iterator { void *obj; /*! container version when the object was created */ uint version; -}; -typedef struct __ao2_iterator ao2_iterator; +}; -ao2_iterator ao2_iterator_init(ao2_container *c, int flags); +struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags); -void *ao2_iterator_next(ao2_iterator *a); +void *ao2_iterator_next(struct ao2_iterator *a); #endif /* _ASTERISK_ASTOBJ2_H */ diff --git a/main/astobj2.c b/main/astobj2.c index ecf8e38e6a..5fef8b1fa3 100644 --- a/main/astobj2.c +++ b/main/astobj2.c @@ -243,7 +243,7 @@ AST_LIST_HEAD_NOLOCK(bucket, bucket_list); * This will be more efficient as we can do the freelist management while * we hold the lock (that we need anyways). */ -struct __ao2_container { +struct ao2_container { ao2_hash_fn hash_fn; ao2_callback_fn cmp_fn; int n_buckets; @@ -272,15 +272,15 @@ static int hash_zero(const void *user_obj, const int flags) /* * A container is just an object, after all! */ -ao2_container * +struct ao2_container * ao2_container_alloc(const uint n_buckets, ao2_hash_fn hash_fn, ao2_callback_fn cmp_fn) { /* XXX maybe consistency check on arguments ? */ /* compute the container size */ - size_t container_size = sizeof(ao2_container) + n_buckets * sizeof(struct bucket); + size_t container_size = sizeof(struct ao2_container) + n_buckets * sizeof(struct bucket); - ao2_container *c = ao2_alloc(container_size, container_destruct); + struct ao2_container *c = ao2_alloc(container_size, container_destruct); if (!c) return NULL; @@ -297,7 +297,7 @@ ao2_container_alloc(const uint n_buckets, ao2_hash_fn hash_fn, /*! * return the number of elements in the container */ -int ao2_container_count(ao2_container *c) +int ao2_container_count(struct ao2_container *c) { return c->elements; } @@ -316,7 +316,7 @@ struct bucket_list { /* * link an object to a container */ -void *__ao2_link(ao2_container *c, void *user_data, int iax2_hack) +void *__ao2_link(struct ao2_container *c, void *user_data, int iax2_hack) { int i; /* create a new list entry */ @@ -361,7 +361,7 @@ int ao2_match_by_addr(void *user_data, void *arg, int flags) * Unlink an object from the container * and destroy the associated * ao2_bucket_list structure. */ -void *ao2_unlink(ao2_container *c, void *user_data) +void *ao2_unlink(struct ao2_container *c, void *user_data) { if (INTERNAL_OBJ(user_data) == NULL) /* safety check on the argument */ return NULL; @@ -384,7 +384,7 @@ static int cb_true(void *user_data, void *arg, int flags) * \return Is a pointer to an object or to a list of object if OBJ_MULTIPLE is * specified. */ -void *ao2_callback(ao2_container *c, +void *ao2_callback(struct ao2_container *c, const enum search_flags flags, ao2_callback_fn cb_fn, void *arg) { @@ -488,7 +488,7 @@ void *ao2_callback(ao2_container *c, /*! * the find function just invokes the default callback with some reasonable flags. */ -void *ao2_find(ao2_container *c, void *arg, enum search_flags flags) +void *ao2_find(struct ao2_container *c, void *arg, enum search_flags flags) { return ao2_callback(c, flags, c->cmp_fn, arg); } @@ -496,9 +496,9 @@ void *ao2_find(ao2_container *c, void *arg, enum search_flags flags) /*! * initialize an iterator so we start from the first object */ -ao2_iterator ao2_iterator_init(ao2_container *c, int flags) +struct ao2_iterator ao2_iterator_init(struct ao2_container *c, int flags) { - ao2_iterator a = { + struct ao2_iterator a = { .c = c, .flags = flags }; @@ -509,7 +509,7 @@ ao2_iterator ao2_iterator_init(ao2_container *c, int flags) /* * move to the next element in the container. */ -void * ao2_iterator_next(ao2_iterator *a) +void * ao2_iterator_next(struct ao2_iterator *a) { int lim; struct bucket_list *p = NULL; @@ -574,7 +574,7 @@ static int cd_cb(void *obj, void *arg, int flag) static void container_destruct(void *_c) { - ao2_container *c = _c; + struct ao2_container *c = _c; ao2_callback(c, OBJ_UNLINK, cd_cb, NULL); ast_atomic_fetchadd_int(&ao2.total_containers, -1); @@ -607,7 +607,7 @@ static int handle_astobj2_stats(int fd, int argc, char *argv[]) */ static int handle_astobj2_test(int fd, int argc, char *argv[]) { - ao2_container *c1; + struct ao2_container *c1; int i, lim; char *obj; static int prof_id = -1; @@ -645,7 +645,7 @@ static int handle_astobj2_test(int fd, int argc, char *argv[]) ast_cli(fd, "testing iterators, remove every second object\n"); { - ao2_iterator ai; + struct ao2_iterator ai; int x = 0; ai = ao2_iterator_init(c1, 0);