Return to lookip_listener.h CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libcharon / plugins / lookip |
1.1 misho 1: /* 2: * Copyright (C) 2012 Martin Willi 3: * Copyright (C) 2012 revosec AG 4: * 5: * This program is free software; you can redistribute it and/or modify it 6: * under the terms of the GNU General Public License as published by the 7: * Free Software Foundation; either version 2 of the License, or (at your 8: * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>. 9: * 10: * This program is distributed in the hope that it will be useful, but 11: * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY 12: * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License 13: * for more details. 14: */ 15: 16: /** 17: * @defgroup lookip_listener lookip_listener 18: * @{ @ingroup lookip 19: */ 20: 21: #ifndef LOOKIP_LISTENER_H_ 22: #define LOOKIP_LISTENER_H_ 23: 24: #include <bus/listeners/listener.h> 25: 26: typedef struct lookip_listener_t lookip_listener_t; 27: 28: /** 29: * Callback function to query virtual IP entries 30: * 31: * @param user user supplied pointer 32: * @param up TRUE if tunnels established, FALSE if closed 33: * @param vip virtual IP of remote peer 34: * @param other peer external IP 35: * @param id peer identity 36: * @param name associated connection name 37: * @param unique_id unique IKE_SA identifier 38: * @return TRUE to receive more results, FALSE to cancel 39: */ 40: typedef bool (*lookip_callback_t)(void *user, bool up, host_t *vip, 41: host_t *other, identification_t *id, 42: char *name, u_int unique_id); 43: 44: /** 45: * Listener collecting virtual IPs. 46: */ 47: struct lookip_listener_t { 48: 49: /** 50: * Implements listener_t interface. 51: */ 52: listener_t listener; 53: 54: /** 55: * Perform a lookup for a given virtual IP, invoke callback for matches. 56: * 57: * The "up" parameter is always TRUE when the callback is invoked using 58: * lookup(). 59: * 60: * @param vip virtual IP to look up, NULL to get all entries 61: * @param cb callback function to invoke 62: * @param user user data to pass to callback function 63: * @return number of matches 64: */ 65: int (*lookup)(lookip_listener_t *this, host_t *vip, 66: lookip_callback_t cb, void *user); 67: 68: /** 69: * Register a listener function that gets notified about virtual IP changes. 70: * 71: * @param cb callback function to invoke 72: * @param user user data to pass to callback function 73: */ 74: void (*add_listener)(lookip_listener_t *this, 75: lookip_callback_t cb, void *user); 76: 77: /** 78: * Unregister a listener by the user data. 79: * 80: * @param user user data, as passed during add_listener() 81: */ 82: void (*remove_listener)(lookip_listener_t *this, void *user); 83: 84: /** 85: * Destroy a lookip_listener_t. 86: */ 87: void (*destroy)(lookip_listener_t *this); 88: }; 89: 90: /** 91: * Create a lookip_listener instance. 92: */ 93: lookip_listener_t *lookip_listener_create(); 94: 95: #endif /** LOOKIP_LISTENER_H_ @}*/