ipsec_event_relay.h 2.0 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. /*
  2. * Copyright (C) 2012 Giuliano Grassi
  3. * Copyright (C) 2012 Ralf Sager
  4. * HSR Hochschule fuer Technik Rapperswil
  5. *
  6. * This program is free software; you can redistribute it and/or modify it
  7. * under the terms of the GNU General Public License as published by the
  8. * Free Software Foundation; either version 2 of the License, or (at your
  9. * option) any later version. See <http://www.fsf.org/copyleft/gpl.txt>.
  10. *
  11. * This program is distributed in the hope that it will be useful, but
  12. * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
  13. * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
  14. * for more details.
  15. */
  16. /**
  17. * @defgroup ipsec_event_relay ipsec_event_relay
  18. * @{ @ingroup libipsec
  19. */
  20. #ifndef IPSEC_EVENT_RELAY_H_
  21. #define IPSEC_EVENT_RELAY_H_
  22. #include "ipsec_event_listener.h"
  23. #include <library.h>
  24. typedef struct ipsec_event_relay_t ipsec_event_relay_t;
  25. /**
  26. * Event relay manager.
  27. *
  28. * Used to notify upper layers about changes
  29. */
  30. struct ipsec_event_relay_t {
  31. /**
  32. * Raise an expire event.
  33. *
  34. * @param protocol protocol (e.g ESP) of the expired SA
  35. * @param spi SPI of the expired SA
  36. * @param dst destination address of expired SA
  37. * @param hard TRUE for a hard expire, FALSE otherwise
  38. */
  39. void (*expire)(ipsec_event_relay_t *this, uint8_t protocol, uint32_t spi,
  40. host_t *dst, bool hard);
  41. /**
  42. * Register a listener to events raised by this manager
  43. *
  44. * @param listener the listener to register
  45. */
  46. void (*register_listener)(ipsec_event_relay_t *this,
  47. ipsec_event_listener_t *listener);
  48. /**
  49. * Unregister a listener
  50. *
  51. * @param listener the listener to unregister
  52. */
  53. void (*unregister_listener)(ipsec_event_relay_t *this,
  54. ipsec_event_listener_t *listener);
  55. /**
  56. * Destroy an ipsec_event_relay_t
  57. */
  58. void (*destroy)(ipsec_event_relay_t *this);
  59. };
  60. /**
  61. * Create an ipsec_event_relay_t instance
  62. *
  63. * @return IPsec event relay instance
  64. */
  65. ipsec_event_relay_t *ipsec_event_relay_create();
  66. #endif /** IPSEC_EVENT_RELAY_H_ @}*/