X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=lib%2Fnetlink-socket.h;h=f2a5d3fa82051ae835e77381e8e2f216248381c4;hb=40f280c781639c24176e054abc20bb7270da9e7a;hp=ad06d8118e8e94d8b7172d39e66ebbb9f3292dd9;hpb=cceb11f5b12d09cc8afc87ca4fd03e941234d439;p=openvswitch diff --git a/lib/netlink-socket.h b/lib/netlink-socket.h index ad06d811..f2a5d3fa 100644 --- a/lib/netlink-socket.h +++ b/lib/netlink-socket.h @@ -35,7 +35,7 @@ #include #include #include -#include +#include "list.h" struct ofpbuf; struct nl_sock; @@ -46,19 +46,36 @@ 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 { @@ -75,5 +92,8 @@ int nl_dump_done(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 */