#include <stdbool.h>
#include <stddef.h>
#include <stdint.h>
-#include <sys/uio.h>
+#include "list.h"
struct ofpbuf;
struct nl_sock;
/* Netlink sockets. */
int nl_sock_create(int protocol, struct nl_sock **);
+int nl_sock_clone(const struct nl_sock *, struct nl_sock **);
void nl_sock_destroy(struct nl_sock *);
int nl_sock_join_mcgroup(struct nl_sock *, unsigned int multicast_group);
int nl_sock_leave_mcgroup(struct nl_sock *, unsigned int multicast_group);
int nl_sock_send(struct nl_sock *, const struct ofpbuf *, bool wait);
-int nl_sock_sendv(struct nl_sock *sock, const struct iovec iov[], size_t n_iov,
- bool wait);
int nl_sock_recv(struct nl_sock *, struct ofpbuf **, bool wait);
int nl_sock_transact(struct nl_sock *, const struct ofpbuf *request,
struct ofpbuf **reply);
int nl_sock_drain(struct nl_sock *);
void nl_sock_wait(const struct nl_sock *, short int events);
+int nl_sock_fd(const struct nl_sock *);
+
+uint32_t nl_sock_pid(const struct nl_sock *);
+
+/* Batching transactions. */
+struct nl_transaction {
+ /* Filled in by client. */
+ struct ofpbuf *request; /* Request to send. */
+
+ /* Filled in by nl_sock_transact_batch(). */
+ struct ofpbuf *reply; /* Reply (NULL if reply was an error code). */
+ int error; /* Positive errno value, 0 if no error. */
+};
+
+void nl_sock_transact_multiple(struct nl_sock *,
+ struct nl_transaction **, size_t n);
/* Table dumping. */
struct nl_dump {
/* Miscellaneous */
int nl_lookup_genl_family(const char *name, int *number);
+int nl_lookup_genl_mcgroup(const char *family_name, const char *group_name,
+ unsigned int *multicast_group,
+ unsigned int fallback);
#endif /* netlink-socket.h */