Annotation of embedaddon/strongswan/src/libcharon/tests/utils/mock_net.c, revision 1.1
1.1 ! misho 1: /*
! 2: * Copyright (C) 2018 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: #include "mock_net.h"
! 17:
! 18: #include <daemon.h>
! 19:
! 20: #include <assert.h>
! 21:
! 22: typedef struct private_kernel_net_t private_kernel_net_t;
! 23:
! 24: /**
! 25: * Private data
! 26: */
! 27: struct private_kernel_net_t {
! 28:
! 29: /**
! 30: * Public interface
! 31: */
! 32: kernel_net_t public;
! 33:
! 34: /**
! 35: * Local IP address
! 36: */
! 37: host_t *host;
! 38: };
! 39:
! 40: /**
! 41: * Global instance
! 42: */
! 43: static private_kernel_net_t *instance;
! 44:
! 45: METHOD(kernel_net_t, get_source_addr, host_t*,
! 46: private_kernel_net_t *this, host_t *dest, host_t *src)
! 47: {
! 48: return this->host->clone(this->host);
! 49: }
! 50:
! 51: METHOD(kernel_net_t, get_nexthop, host_t*,
! 52: private_kernel_net_t *this, host_t *dest, int prefix, host_t *src,
! 53: char **iface)
! 54: {
! 55: if (iface)
! 56: {
! 57: *iface = strdup("lo");
! 58: }
! 59: return this->host->clone(this->host);
! 60: }
! 61:
! 62: METHOD(kernel_net_t, get_interface, bool,
! 63: private_kernel_net_t *this, host_t *host, char **name)
! 64: {
! 65: if (host->ip_equals(host, this->host))
! 66: {
! 67: if (name)
! 68: {
! 69: *name = strdup("lo");
! 70: }
! 71: return TRUE;
! 72: }
! 73: return FALSE;
! 74: }
! 75:
! 76: METHOD(kernel_net_t, create_address_enumerator, enumerator_t*,
! 77: private_kernel_net_t *this, kernel_address_type_t which)
! 78: {
! 79: return enumerator_create_single(this->host, NULL);
! 80: }
! 81:
! 82: METHOD(kernel_net_t, destroy, void,
! 83: private_kernel_net_t *this)
! 84: {
! 85: this->host->destroy(this->host);
! 86: free(this);
! 87: }
! 88:
! 89: /*
! 90: * Described in header
! 91: */
! 92: kernel_net_t *mock_net_create()
! 93: {
! 94: private_kernel_net_t *this;
! 95:
! 96: INIT(this,
! 97: .public = {
! 98: .get_source_addr = _get_source_addr,
! 99: .get_nexthop = _get_nexthop,
! 100: .get_interface = _get_interface,
! 101: .create_address_enumerator = _create_address_enumerator,
! 102: .create_local_subnet_enumerator = (void*)enumerator_create_empty,
! 103: .add_ip = (void*)return_failed,
! 104: .del_ip = (void*)return_failed,
! 105: .add_route = (void*)return_failed,
! 106: .del_route = (void*)return_failed,
! 107: .destroy = _destroy,
! 108: },
! 109: .host = host_create_from_string("127.0.0.1", 500),
! 110: );
! 111:
! 112: instance = this;
! 113:
! 114: return &this->public;
! 115: }
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>