fixed interface disconnection
[strongswan.git] / src / dumm / iface.h
1 /*
2 * Copyright (C) 2007 Martin Willi
3 * 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 #ifndef IFACE_H
17 #define IFACE_H
18
19 #include <library.h>
20 #include <utils/enumerator.h>
21
22 #define TAP_DEVICE "/dev/net/tun"
23
24 typedef struct iface_t iface_t;
25
26 #include "mconsole.h"
27 #include "bridge.h"
28
29 /**
30 * @brief Interface in a guest, connected to a tap device on the host.
31 */
32 struct iface_t {
33
34 /**
35 * @brief Get the interface name in the guest (e.g. eth0).
36 *
37 * @return guest interface name
38 */
39 char* (*get_guestif)(iface_t *this);
40
41 /**
42 * @brief Get the interface name at the host (e.g. tap0).
43 *
44 * @return host interface (tap device) name
45 */
46 char* (*get_hostif)(iface_t *this);
47
48 /**
49 * @brief Set the bridge this interface is attached to.
50 *
51 * @param bridge assigned bridge, or NULL for none
52 */
53 void (*set_bridge)(iface_t *this, bridge_t *bridge);
54
55 /*
56 bool (*add_addr) (iface_t *this, host_t *addr);
57 enumerator_t* (*create_addr_enumerator) (iface_t *this);
58 */
59
60 /**
61 * @brief Destroy an interface
62 */
63 void (*destroy) (iface_t *this);
64 };
65
66 /**
67 * @brief Create a new interface for a guest
68 *
69 * @param guest name of the guest for this interface
70 * @param guestif name of the interface in the guest
71 * @param mconsole mconsole of guest
72 * @return interface descriptor, or NULL if failed
73 */
74 iface_t *iface_create(char *guest, char *guestif, mconsole_t *mconsole);
75
76 #endif /* IFACE_H */
77