X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=inline;f=lib%2Fnetlink-socket.h;h=f2a5d3fa82051ae835e77381e8e2f216248381c4;hb=17f7f7e02cfd44dc7755fbebcfb942c07f937858;hp=dc21ce83804965d73236f2c2fa3429bad4906bc1;hpb=2fe27d5ad27f3c7879ea696209bcf9702d9b7109;p=openvswitch diff --git a/lib/netlink-socket.h b/lib/netlink-socket.h index dc21ce83..f2a5d3fa 100644 --- a/lib/netlink-socket.h +++ b/lib/netlink-socket.h @@ -1,5 +1,5 @@ /* - * Copyright (c) 2008, 2009, 2010 Nicira Networks. + * Copyright (c) 2008, 2009, 2010, 2011 Nicira Networks. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -35,7 +35,7 @@ #include #include #include -#include +#include "list.h" struct ofpbuf; struct nl_sock; @@ -45,19 +45,37 @@ struct nl_sock; #endif /* Netlink sockets. */ -int nl_sock_create(int protocol, int multicast_group, - size_t so_sndbuf, size_t so_rcvbuf, - struct nl_sock **); +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 { @@ -74,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 */