Skip to content

Commit

Permalink
slist: use for address,extension,dhcp6,var_array
Browse files Browse the repository at this point in the history
  • Loading branch information
mtomaschewski committed Apr 19, 2023
1 parent bb59a98 commit 3e513a6
Show file tree
Hide file tree
Showing 11 changed files with 130 additions and 546 deletions.
11 changes: 7 additions & 4 deletions include/wicked/address.h
Expand Up @@ -26,6 +26,7 @@

#include <wicked/types.h>
#include <wicked/refcount.h>
#include <wicked/slist.h>
#include <wicked/util.h>

#include <sys/socket.h>
Expand Down Expand Up @@ -164,12 +165,14 @@ extern unsigned int ni_address_preferred_lft(const ni_address_t *, const struct
extern ni_bool_t ni_address_lft_is_valid(const ni_address_t *, const struct timeval *);
extern ni_bool_t ni_address_lft_is_preferred(const ni_address_t *, const struct timeval *);

extern void ni_address_list_append(ni_address_t **, ni_address_t *);
extern void ni_address_list_destroy(ni_address_t **);
extern ni_declare_slist_append(ni_address);
extern ni_declare_slist_remove(ni_address);
extern ni_declare_slist_delete(ni_address);
extern ni_declare_slist_destroy(ni_address);
extern ni_declare_slist_copy(ni_address);
extern ni_declare_slist_count(ni_address);
extern void ni_address_list_dedup(ni_address_t **);
extern void ni_address_list_copy(ni_address_t **, const ni_address_t *);
extern ni_address_t * ni_address_list_find(ni_address_t *, const ni_sockaddr_t *);
extern unsigned int ni_address_list_count(ni_address_t *list);

extern void ni_address_array_init(ni_address_array_t *);
extern void ni_address_array_destroy(ni_address_array_t *);
Expand Down
5 changes: 3 additions & 2 deletions include/wicked/util.h
Expand Up @@ -9,6 +9,7 @@

#include <sys/types.h>
#include <wicked/types.h>
#include <wicked/slist.h>
#include <string.h>
#include <stdio.h>
#include <stdarg.h>
Expand Down Expand Up @@ -197,8 +198,8 @@ extern ni_bool_t ni_var_array_set_boolean(ni_var_array_t *, const char *, int);
extern void ni_var_array_sort(ni_var_array_t *, ni_var_compare_fn_t);
extern void ni_var_array_sort_by_name(ni_var_array_t *);

extern void ni_var_array_list_append(ni_var_array_t **, ni_var_array_t *);
extern void ni_var_array_list_destroy(ni_var_array_t **);
extern ni_declare_slist_append(ni_var_array);
extern ni_declare_slist_destroy(ni_var_array);

extern void ni_stringbuf_set(ni_stringbuf_t *, const char *);
extern void ni_stringbuf_init(ni_stringbuf_t *);
Expand Down
65 changes: 8 additions & 57 deletions src/address.c
Expand Up @@ -31,6 +31,7 @@
#include <wicked/route.h>

#include "refcount_priv.h"
#include "slist_priv.h"
#include "util_priv.h"

#include <string.h>
Expand Down Expand Up @@ -430,13 +431,12 @@ ni_address_lft_is_preferred(const ni_address_t *ap, const struct timeval *curren
/*
* ni_address list functions
*/
void
ni_address_list_append(ni_address_t **list, ni_address_t *ap)
{
while (*list)
list = &(*list)->next;
*list = ap;
}
extern ni_define_slist_append(ni_address);
extern ni_define_slist_remove(ni_address);
extern ni_define_slist_delete(ni_address);
extern ni_define_slist_destroy(ni_address);
extern ni_define_slist_copy(ni_address);
extern ni_define_slist_count(ni_address);

void
ni_address_list_dedup(ni_address_t **list)
Expand All @@ -461,67 +461,18 @@ ni_address_list_dedup(ni_address_t **list)
}
}

void
ni_address_list_copy(ni_address_t **dst, const ni_address_t *src)
{
const ni_address_t *ap;

if (!dst)
return;

for (ap = src; ap != NULL; ap = ap->next)
ni_address_list_append(dst, ni_address_clone(ap));
}

unsigned int
ni_address_list_count(ni_address_t *list)
{
unsigned int count = 0;
const ni_address_t *ap;

for (ap = list; ap != NULL; ap = ap->next)
count++;
return count;
}

ni_address_t *
ni_address_list_find(ni_address_t *list, const ni_sockaddr_t *addr)
{
ni_address_t *ap;

for (ap = list; ap != NULL; ap = ap->next) {
ni_slist_foreach(list, ap) {
if (ni_sockaddr_equal(&ap->local_addr, addr))
return ap;
}
return NULL;
}

ni_bool_t
__ni_address_list_remove(ni_address_t **list, ni_address_t *ap)
{
ni_address_t **pos, *cur;

for (pos = list; (cur = *pos) != NULL; pos = &cur->next) {
if (cur == ap) {
*pos = cur->next;
ni_address_free(cur);
return TRUE;
}
}
return FALSE;
}

void
ni_address_list_destroy(ni_address_t **list)
{
ni_address_t *ap;

while ((ap = *list) != NULL) {
*list = ap->next;
ni_address_free(ap);
}
}

void
ni_address_array_init(ni_address_array_t *array)
{
Expand Down
12 changes: 8 additions & 4 deletions src/auto6.c
Expand Up @@ -402,12 +402,14 @@ ni_auto6_lease_address_update(ni_netdev_t *dev, ni_addrconf_lease_t *lease, cons

if ((la = ni_address_list_find(lease->addrs, &ap->local_addr))) {
if (ap->owner != NI_ADDRCONF_NONE && ap->owner != NI_ADDRCONF_AUTOCONF) {
unsigned int plen = la->prefixlen;

changed = TRUE;
__ni_address_list_remove(&lease->addrs, la);
ni_address_list_delete(&lease->addrs, la);
ni_debug_verbose(NI_LOG_DEBUG, NI_TRACE_IPV6|NI_TRACE_AUTOIP,
"%s: removed address %s/%u in %s:%s lease (owner %s)",
dev->name,
ni_sockaddr_print(&la->local_addr), la->prefixlen,
ni_sockaddr_print(&ap->local_addr), plen,
ni_addrfamily_type_to_name(lease->family),
ni_addrconf_type_to_name(lease->type),
ni_addrconf_type_to_name(ap->owner));
Expand Down Expand Up @@ -573,12 +575,14 @@ ni_auto6_on_address_event(ni_netdev_t *dev, ni_event_t event, const ni_address_t

case NI_EVENT_ADDRESS_DELETE:
if ((la = ni_address_list_find(lease->addrs, &ap->local_addr))) {
unsigned int plen = la->prefixlen;

changed = TRUE;
__ni_address_list_remove(&lease->addrs, la);
ni_address_list_delete(&lease->addrs, la);
ni_debug_verbose(NI_LOG_DEBUG, NI_TRACE_IPV6|NI_TRACE_AUTOIP,
"%s: deleted address %s/%u in %s:%s lease (owner %s)",
dev->name,
ni_sockaddr_print(&la->local_addr), la->prefixlen,
ni_sockaddr_print(&ap->local_addr), plen,
ni_addrfamily_type_to_name(lease->family),
ni_addrconf_type_to_name(lease->type),
ni_addrconf_type_to_name(ap->owner));
Expand Down

0 comments on commit 3e513a6

Please sign in to comment.