#ifndef __SWITCH_CORE_H #define __SWITCH_CORE_H #include #include #define SWITCH_MAX_BUFSZ 4096 #define SWITCH_NAME_BUFSZ 16 #define SWITCH_MEDIA_AUTO 1 #define SWITCH_MEDIA_100 2 #define SWITCH_MEDIA_FD 4 #define SWITCH_MEDIA_1000 8 typedef int (*switch_handler)(void *driver, char *buf, int nr); typedef struct { const char *name; switch_handler read, write; } switch_config; typedef struct { struct list_head list; const char *name; const char *version; const char *interface; int cpuport; int ports; int vlans; const switch_config *driver_handlers, *port_handlers, *vlan_handlers; void *data; void *priv; char dev_name[SWITCH_NAME_BUFSZ]; } switch_driver; typedef struct { u32 port, untag, pvid; } switch_vlan_config; extern int switch_device_registered (char* device); extern int switch_register_driver(switch_driver *driver); extern void switch_unregister_driver(char *name); extern switch_vlan_config *switch_parse_vlan(switch_driver *driver, char *buf); extern int switch_parse_media(char *buf); extern int switch_print_media(char *buf, int media); static inline char *strdup(const char *str) { char *new = kmalloc(strlen(str) + 1, GFP_KERNEL); strcpy(new, str); return new; } #endif ud-email/mitmproxy/about/'>aboutsummaryrefslogtreecommitdiffstats
blob: 39d3b74ac49579b5c4a36fe14081993a3ac145a6 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
import queue
import asyncio
from mitmproxy import exceptions


class Channel:
    """
        The only way for the proxy server to communicate with the master
        is to use the channel it has been given.
    """
    def __init__(self, master, loop, should_exit):
        self.master = master
        self.loop = loop
        self.should_exit = should_exit

    def ask(self, mtype, m):
        """
        Decorate a message with a reply attribute, and send it to the master.
        Then wait for a response.

        Raises:
            exceptions.Kill: All connections should be closed immediately.
        """
        if not self.should_exit.is_set():
            m.reply = Reply(m)
            asyncio.run_coroutine_threadsafe(
                self.master.addons.handle_lifecycle(mtype, m),
                self.loop,