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
|
/*
* Copyright (c) 2014 VMware, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at:
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef __EVENT_H_
#define __EVENT_H_ 1
#include "Conntrack.h"
typedef struct _OVS_CT_EVENT_ENTRY {
OVS_CT_ENTRY entry;
UINT8 type;
UINT64 pad[10];
} OVS_CT_EVENT_ENTRY, *POVS_CT_EVENT_ENTRY;
typedef struct _OVS_EVENT_QUEUE_ELEM {
LIST_ENTRY link;
union {
OVS_VPORT_EVENT_ENTRY vportEvent;
OVS_CT_EVENT_ENTRY ctEvent;
};
} OVS_EVENT_QUEUE_ELEM, *POVS_EVENT_QUEUE_ELEM;
typedef struct _OVS_EVENT_QUEUE {
LIST_ENTRY queueLink;
LIST_ENTRY elemList;
UINT32 mask;
UINT32 mcastEventId;
UINT32 protocol;
UINT16 numElems;
BOOLEAN pollAll;
PIRP pendingIrp;
PVOID instance;
} OVS_EVENT_QUEUE, *POVS_EVENT_QUEUE;
NTSTATUS OvsInitEventQueue(VOID);
VOID OvsCleanupEventQueue(VOID);
struct _OVS_OPEN_INSTANCE;
VOID OvsCleanupEvent(struct _OVS_OPEN_INSTANCE *instance);
VOID OvsPostVportEvent(POVS_VPORT_EVENT_ENTRY event);
VOID OvsPostCtEvent(POVS_CT_EVENT_ENTRY ctEvent);
NTSTATUS OvsSubscribeEventIoctl(PFILE_OBJECT fileObject, PVOID inputBuffer,
UINT32 inputLength);
NTSTATUS OvsPollEventIoctl(PFILE_OBJECT fileObject, PVOID inputBuffer,
UINT32 inputLength, PVOID outputBuffer,
UINT32 outputLength, UINT32 *replyLen);
NTSTATUS OvsWaitEventIoctl(PIRP irp, PFILE_OBJECT fileObject,
PVOID inputBuffer, UINT32 inputLength);
NTSTATUS OvsRemoveVportEventEntry(POVS_OPEN_INSTANCE instance,
POVS_VPORT_EVENT_ENTRY entry);
NTSTATUS OvsRemoveCtEventEntry(POVS_OPEN_INSTANCE instance,
POVS_CT_EVENT_ENTRY entry);
#endif /* __EVENT_H_ */
|