From 8f7f273fa4ce32e983f4437a7efa89d75062a2f9 Mon Sep 17 00:00:00 2001 From: nbd Date: Mon, 6 Jul 2009 19:05:24 +0000 Subject: upgrade to the new version of wprobe - includes reconfigurable layer 2 statistics, remote access, more configuration options and many bugfixes git-svn-id: svn://svn.openwrt.org/openwrt/trunk@16719 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- package/wprobe/src/user/wprobe.h | 60 ++++++++++++++++++++++++++++++++++++++-- 1 file changed, 57 insertions(+), 3 deletions(-) (limited to 'package/wprobe/src/user/wprobe.h') diff --git a/package/wprobe/src/user/wprobe.h b/package/wprobe/src/user/wprobe.h index c0b4902f3c..706facc808 100644 --- a/package/wprobe/src/user/wprobe.h +++ b/package/wprobe/src/user/wprobe.h @@ -87,8 +87,19 @@ struct wprobe_link { unsigned char addr[6]; }; +struct wprobe_filter_item { + char name[32]; + uint64_t rx; + uint64_t tx; +}; + +struct wprobe_iface_ops; struct wprobe_iface { + const struct wprobe_iface_ops *ops; + + int sockfd; const char *ifname; + unsigned int genl_family; char addr[6]; struct list_head global_attr; @@ -101,11 +112,23 @@ struct wprobe_iface { int scale_max; int scale_m; int scale_d; + + /* filter */ + void *filter; + + /* filter_len: + * set to -1 to drop the current filter + * automatically reset to 0 after config apply + */ + int filter_len; }; +typedef void (*wprobe_filter_cb)(void *arg, const char *group, struct wprobe_filter_item *items, int n_items); +extern int wprobe_port; + /** * wprobe_update_links: get a list of all link partners - * @ifname: name of the wprobe interface + * @dev: wprobe device structure * @list: linked list for storing link descriptions * * when wprobe_update_links is called multiple times, the linked list @@ -113,9 +136,17 @@ struct wprobe_iface { */ extern int wprobe_update_links(struct wprobe_iface *dev); +/** + * wprobe_dump_filters: dump all layer 2 filter counters + * @dev: wprobe device structure + * @cb: callback (called once per filter group) + * @arg: user argument for the callback + */ +extern int wprobe_dump_filters(struct wprobe_iface *dev, wprobe_filter_cb cb, void *arg); + /** * wprobe_measure: start a measurement request for all global attributes - * @ifname: name of the wprobe interface + * @dev: wprobe device structure * * not all attributes are automatically filled with data, since for some * it may be desirable to control the sampling interval from user space @@ -124,7 +155,7 @@ extern int wprobe_update_links(struct wprobe_iface *dev); extern int wprobe_measure(struct wprobe_iface *dev); /** - * wprobe_get_dev: get device information + * wprobe_get_dev: get a handle to a local wprobe device * @ifname: name of the wprobe interface * * queries the wprobe interface for all attributes @@ -132,6 +163,12 @@ extern int wprobe_measure(struct wprobe_iface *dev); */ extern struct wprobe_iface *wprobe_get_dev(const char *ifname); +/** + * wprobe_get_auto: get a handle to a local or remote wprobe device + * @arg: pointer to the wprobe device, either (local) or : (remote) + */ +extern struct wprobe_iface *wprobe_get_auto(const char *arg, char **err); + /** * wprobe_get_dev: free all device information * @dev: wprobe device structure @@ -156,4 +193,21 @@ extern int wprobe_apply_config(struct wprobe_iface *dev); */ extern int wprobe_request_data(struct wprobe_iface *dev, const unsigned char *addr); +/** + * wprobe_server_init: send a wprobe server init message to a server's client socket + * @socket: socket of the connection to the client + */ +extern int wprobe_server_init(int socket); + +/** + * wprobe_server_handle: read a request from the client socket, process it, send the response + * @socket: socket of the connection to the client + */ +extern int wprobe_server_handle(int socket); + +/** + * wprobe_server_done: release memory allocated for the server connection + */ +extern void wprobe_server_done(void); + #endif -- cgit v1.2.3