sys/queue.h does not exist on linux-musl targets and fails build as:
devlink.c:28:10: fatal error: sys/queue.h: No such file or directory
28 | #include <sys/queue.h>
| ^~~~~~~~~~~~~
The change ports to list.h API and drops dependency of 'sys/queue.h'.
The API maps one-to-one.
Build-tested on linux-musl and linux-glibc.
Bug: https://bugs.gentoo.org/690486
CC: Stephen Hemminger <stephen@networkplumber.org>
CC: netdev@vger.kernel.org
Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
Signed-off-by: Stephen Hemminger <stephen@networkplumber.org>
#include <linux/devlink.h>
#include <libmnl/libmnl.h>
#include <netinet/ether.h>
#include <linux/devlink.h>
#include <libmnl/libmnl.h>
#include <netinet/ether.h>
#include "SNAPSHOT.h"
#include "list.h"
#include "SNAPSHOT.h"
#include "list.h"
struct nest_qentry {
int attr_type;
struct nest_qentry {
int attr_type;
- TAILQ_ENTRY(nest_qentry) nest_entries;
+ struct list_head nest_entries;
};
struct fmsg_cb_data {
struct dl *dl;
uint8_t value_type;
};
struct fmsg_cb_data {
struct dl *dl;
uint8_t value_type;
- TAILQ_HEAD(, nest_qentry) qhead;
+ struct list_head qhead;
};
static int cmd_fmsg_nest_queue(struct fmsg_cb_data *fmsg_data,
};
static int cmd_fmsg_nest_queue(struct fmsg_cb_data *fmsg_data,
return -ENOMEM;
entry->attr_type = *attr_value;
return -ENOMEM;
entry->attr_type = *attr_value;
- TAILQ_INSERT_HEAD(&fmsg_data->qhead, entry, nest_entries);
+ list_add(&fmsg_data->qhead, &entry->nest_entries);
- if (TAILQ_EMPTY(&fmsg_data->qhead))
+ if (list_empty(&fmsg_data->qhead))
- entry = TAILQ_FIRST(&fmsg_data->qhead);
+ entry = list_first_entry(&fmsg_data->qhead, struct nest_qentry, nest_entries);
*attr_value = entry->attr_type;
*attr_value = entry->attr_type;
- TAILQ_REMOVE(&fmsg_data->qhead, entry, nest_entries);
+ list_del(&entry->nest_entries);
free(entry);
}
return MNL_CB_OK;
free(entry);
}
return MNL_CB_OK;
return err;
data.dl = dl;
return err;
data.dl = dl;
- TAILQ_INIT(&data.qhead);
+ INIT_LIST_HEAD(&data.qhead);
err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_fmsg_object_cb, &data);
return err;
}
err = _mnlg_socket_sndrcv(dl->nlg, nlh, cmd_fmsg_object_cb, &data);
return err;
}