Return to stroke_plugin.c CVS log | Up to [ELWIX - Embedded LightWeight unIX -] / embedaddon / strongswan / src / libcharon / plugins / stroke |
1.1 misho 1: /* 2: * Copyright (C) 2008 Martin Willi 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: #include "stroke_plugin.h" 17: 18: #include <library.h> 19: #include "stroke_socket.h" 20: 21: typedef struct private_stroke_plugin_t private_stroke_plugin_t; 22: 23: /** 24: * private data of stroke_plugin 25: */ 26: struct private_stroke_plugin_t { 27: 28: /** 29: * public functions 30: */ 31: stroke_plugin_t public; 32: 33: /** 34: * stroke socket, receives strokes 35: */ 36: stroke_socket_t *socket; 37: }; 38: 39: METHOD(plugin_t, get_name, char*, 40: private_stroke_plugin_t *this) 41: { 42: return "stroke"; 43: } 44: 45: /** 46: * Register stroke plugin features 47: */ 48: static bool register_stroke(private_stroke_plugin_t *this, 49: plugin_feature_t *feature, bool reg, void *data) 50: { 51: if (reg) 52: { 53: this->socket = stroke_socket_create(); 54: return this->socket != NULL; 55: } 56: else 57: { 58: DESTROY_IF(this->socket); 59: return TRUE; 60: } 61: } 62: 63: METHOD(plugin_t, get_features, int, 64: private_stroke_plugin_t *this, plugin_feature_t *features[]) 65: { 66: static plugin_feature_t f[] = { 67: PLUGIN_CALLBACK((plugin_feature_callback_t)register_stroke, NULL), 68: PLUGIN_PROVIDE(CUSTOM, "stroke"), 69: PLUGIN_SDEPEND(CUSTOM, "counters"), 70: PLUGIN_SDEPEND(PRIVKEY, KEY_RSA), 71: PLUGIN_SDEPEND(PRIVKEY, KEY_ECDSA), 72: PLUGIN_SDEPEND(PRIVKEY, KEY_DSA), 73: PLUGIN_SDEPEND(PRIVKEY, KEY_BLISS), 74: PLUGIN_SDEPEND(PRIVKEY, KEY_ED25519), 75: PLUGIN_SDEPEND(PRIVKEY, KEY_ED448), 76: PLUGIN_SDEPEND(CERT_DECODE, CERT_ANY), 77: PLUGIN_SDEPEND(CERT_DECODE, CERT_X509), 78: PLUGIN_SDEPEND(CERT_DECODE, CERT_X509_CRL), 79: PLUGIN_SDEPEND(CERT_DECODE, CERT_X509_AC), 80: PLUGIN_SDEPEND(CERT_DECODE, CERT_TRUSTED_PUBKEY), 81: }; 82: *features = f; 83: return countof(f); 84: } 85: 86: METHOD(plugin_t, destroy, void, 87: private_stroke_plugin_t *this) 88: { 89: free(this); 90: } 91: 92: /* 93: * see header file 94: */ 95: plugin_t *stroke_plugin_create() 96: { 97: private_stroke_plugin_t *this; 98: 99: INIT(this, 100: .public = { 101: .plugin = { 102: .get_name = _get_name, 103: .reload = (void*)return_false, 104: .get_features = _get_features, 105: .destroy = _destroy, 106: }, 107: }, 108: ); 109: 110: return &this->public.plugin; 111: }