Annotation of embedaddon/strongswan/src/libcharon/sa/shunt_manager.h, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2015-2017 Tobias Brunner
! 3: * Copyright (C) 2011 Andreas Steffen
! 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: /**
! 18: * @defgroup shunt_manager shunt_manager
! 19: * @{ @ingroup sa
! 20: */
! 21:
! 22: #ifndef SHUNT_MANAGER_H_
! 23: #define SHUNT_MANAGER_H_
! 24:
! 25: #include <library.h>
! 26: #include <collections/enumerator.h>
! 27: #include <config/child_cfg.h>
! 28:
! 29: typedef struct shunt_manager_t shunt_manager_t;
! 30:
! 31: /**
! 32: * Manage PASS and DROP shunt policy excepting traffic from IPsec SAs.
! 33: */
! 34: struct shunt_manager_t {
! 35:
! 36: /**
! 37: * Install a policy as a shunt.
! 38: *
! 39: * @param ns namespace (e.g. name of a connection or plugin), cloned
! 40: * @param child child configuration to install as a shunt
! 41: * @return TRUE if installed successfully
! 42: */
! 43: bool (*install)(shunt_manager_t *this, char *ns, child_cfg_t *child);
! 44:
! 45: /**
! 46: * Uninstall a shunt policy.
! 47: *
! 48: * If no namespace is given the first matching child configuration is
! 49: * removed.
! 50: *
! 51: * @param ns namespace (same as given during installation) or NULL
! 52: * @param name name of child configuration to uninstall as a shunt
! 53: * @return TRUE if uninstalled successfully
! 54: */
! 55: bool (*uninstall)(shunt_manager_t *this, char *ns, char *name);
! 56:
! 57: /**
! 58: * Create an enumerator over all installed shunts.
! 59: *
! 60: * @return enumerator over (char*, child_cfg_t*)
! 61: */
! 62: enumerator_t* (*create_enumerator)(shunt_manager_t *this);
! 63:
! 64: /**
! 65: * Clear any installed shunt.
! 66: */
! 67: void (*flush)(shunt_manager_t *this);
! 68:
! 69: /**
! 70: * Destroy a shunt_manager_t.
! 71: */
! 72: void (*destroy)(shunt_manager_t *this);
! 73: };
! 74:
! 75: /**
! 76: * Create a shunt_manager instance.
! 77: */
! 78: shunt_manager_t *shunt_manager_create();
! 79:
! 80: #endif /** SHUNT_MANAGER_H_ @}*/
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>