Annotation of embedaddon/strongswan/src/libcharon/kernel/kernel_listener.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2010-2013 Tobias Brunner
! 3: * HSR Hochschule fuer Technik Rapperswil
! 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 kernel_listener kernel_listener
! 18: * @{ @ingroup kernel
! 19: */
! 20:
! 21: #ifndef KERNEL_LISTENER_H_
! 22: #define KERNEL_LISTENER_H_
! 23:
! 24: typedef struct kernel_listener_t kernel_listener_t;
! 25:
! 26: #include <networking/host.h>
! 27: #include <networking/tun_device.h>
! 28: #include <selectors/traffic_selector.h>
! 29: #include <kernel/kernel_ipsec.h>
! 30:
! 31: /**
! 32: * Interface for components interested in kernel events.
! 33: *
! 34: * All hooks are optional.
! 35: */
! 36: struct kernel_listener_t {
! 37:
! 38: /**
! 39: * Hook called if an acquire event for a policy is received.
! 40: *
! 41: * @param reqid reqid of the policy to acquire
! 42: * @param src_ts source traffic selector
! 43: * @param dst_ts destination traffic selector
! 44: * @return TRUE to remain registered, FALSE to unregister
! 45: */
! 46: bool (*acquire)(kernel_listener_t *this, uint32_t reqid,
! 47: traffic_selector_t *src_ts, traffic_selector_t *dst_ts);
! 48:
! 49: /**
! 50: * Hook called if an expire event for an IPsec SA is received.
! 51: *
! 52: * @param protocol protocol of the expired SA
! 53: * @param spi spi of the expired SA
! 54: * @param dst destination address of expired SA
! 55: * @param hard TRUE if it is a hard expire, FALSE otherwise
! 56: * @return TRUE to remain registered, FALSE to unregister
! 57: */
! 58: bool (*expire)(kernel_listener_t *this, uint8_t protocol, uint32_t spi,
! 59: host_t *dst, bool hard);
! 60:
! 61: /**
! 62: * Hook called if the NAT mappings of an IPsec SA changed.
! 63: *
! 64: * @param protocol IPsec protocol of affected SA
! 65: * @param spi spi of the SA
! 66: * @param dst old destination address of SA
! 67: * @param remote new remote host
! 68: * @return TRUE to remain registered, FALSE to unregister
! 69: */
! 70: bool (*mapping)(kernel_listener_t *this, uint8_t protocol, uint32_t spi,
! 71: host_t *dst, host_t *remote);
! 72:
! 73: /**
! 74: * Hook called if a migrate event for a policy is received.
! 75: *
! 76: * @param reqid reqid of the policy
! 77: * @param src_ts source traffic selector
! 78: * @param dst_ts destination traffic selector
! 79: * @param direction direction of the policy (in|out)
! 80: * @param local local host address to be used in the IKE_SA
! 81: * @param remote remote host address to be used in the IKE_SA
! 82: * @return TRUE to remain registered, FALSE to unregister
! 83: */
! 84: bool (*migrate)(kernel_listener_t *this, uint32_t reqid,
! 85: traffic_selector_t *src_ts, traffic_selector_t *dst_ts,
! 86: policy_dir_t direction, host_t *local, host_t *remote);
! 87:
! 88: /**
! 89: * Hook called if changes in the networking layer occurred (interfaces
! 90: * up/down, routes added/deleted etc.).
! 91: *
! 92: * @param address TRUE if address list, FALSE if routing changed
! 93: * @return TRUE to remain registered, FALSE to unregister
! 94: */
! 95: bool (*roam)(kernel_listener_t *this, bool address);
! 96:
! 97: /**
! 98: * Hook called after a TUN device was created for a virtual IP address, or
! 99: * before such a device gets destroyed.
! 100: *
! 101: * @param tun TUN device
! 102: * @param created TRUE if created, FALSE if going to be destroyed
! 103: */
! 104: bool (*tun)(kernel_listener_t *this, tun_device_t *tun, bool created);
! 105: };
! 106:
! 107: #endif /** KERNEL_LISTENER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>