1 |
dpavlin |
1 |
/* |
2 |
|
|
* Cisco 7200 (Predator) simulation platform. |
3 |
|
|
* Copyright (c) 2006 Christophe Fillot (cf@utc.fr) |
4 |
|
|
* |
5 |
|
|
* NetIO bridge. |
6 |
|
|
*/ |
7 |
|
|
|
8 |
|
|
#ifndef __NET_IO_BRIDGE_H__ |
9 |
|
|
#define __NET_IO_BRIDGE_H__ |
10 |
|
|
|
11 |
|
|
#include <pthread.h> |
12 |
|
|
|
13 |
|
|
#include "utils.h" |
14 |
|
|
#include "net_io.h" |
15 |
|
|
|
16 |
|
|
#define NETIO_BRIDGE_MAX_NIO 32 |
17 |
|
|
|
18 |
|
|
typedef struct netio_bridge netio_bridge_t; |
19 |
|
|
struct netio_bridge { |
20 |
|
|
char *name; |
21 |
|
|
pthread_mutex_t lock; |
22 |
|
|
netio_desc_t *nio[NETIO_BRIDGE_MAX_NIO]; |
23 |
|
|
}; |
24 |
|
|
|
25 |
|
|
#define NETIO_BRIDGE_LOCK(t) pthread_mutex_lock(&(t)->lock) |
26 |
|
|
#define NETIO_BRIDGE_UNLOCK(t) pthread_mutex_unlock(&(t)->lock) |
27 |
|
|
|
28 |
|
|
/* Acquire a reference to NetIO bridge from the registry (inc ref count) */ |
29 |
|
|
netio_desc_t *netio_bridge_acquire(char *name); |
30 |
|
|
|
31 |
|
|
/* Release a NetIO bridge (decrement reference count) */ |
32 |
|
|
int netio_bridge_release(char *name); |
33 |
|
|
|
34 |
|
|
/* Create a virtual bridge */ |
35 |
|
|
netio_bridge_t *netio_bridge_create(char *name); |
36 |
|
|
|
37 |
|
|
/* Add a NetIO descriptor to a virtual bridge */ |
38 |
|
|
int netio_bridge_add_netio(netio_bridge_t *t,char *nio_name); |
39 |
|
|
|
40 |
|
|
/* Remove a NetIO descriptor from a virtual bridge */ |
41 |
|
|
int netio_bridge_remove_netio(netio_bridge_t *t,char *nio_name); |
42 |
|
|
|
43 |
|
|
/* Save the configuration of a brdige */ |
44 |
|
|
void netio_bridge_save_config(netio_bridge_t *t,FILE *fd); |
45 |
|
|
|
46 |
|
|
/* Save configurations of all NIO bridges */ |
47 |
|
|
void netio_bridge_save_config_all(FILE *fd); |
48 |
|
|
|
49 |
|
|
/* Delete a virtual bridge */ |
50 |
|
|
int netio_bridge_delete(char *name); |
51 |
|
|
|
52 |
|
|
/* Delete all virtual bridges */ |
53 |
|
|
int netio_bridge_delete_all(void); |
54 |
|
|
|
55 |
|
|
/* Start a virtual bridge */ |
56 |
|
|
int netio_bridge_start(char *filename); |
57 |
|
|
|
58 |
|
|
#endif |