Revision 99a0949b tap-win32.c

b/tap-win32.c
84 84
    unsigned char buffer [TUN_BUFFER_SIZE];
85 85
    unsigned long read_size;
86 86
    struct tun_buffer_s* next;
87
} tun_buffer_t;
87
} a_tun_buffer;
88 88

  
89 89
typedef struct tap_win32_overlapped {
90 90
    HANDLE handle;
......
97 97
    CRITICAL_SECTION free_list_cs;
98 98
    OVERLAPPED read_overlapped;
99 99
    OVERLAPPED write_overlapped;
100
    tun_buffer_t buffers[TUN_MAX_BUFFER_COUNT];
101
    tun_buffer_t* free_list;
102
    tun_buffer_t* output_queue_front;
103
    tun_buffer_t* output_queue_back;
104
} tap_win32_overlapped_t;
100
    a_tun_buffer buffers[TUN_MAX_BUFFER_COUNT];
101
    a_tun_buffer* free_list;
102
    a_tun_buffer* output_queue_front;
103
    a_tun_buffer* output_queue_back;
104
} a_tap_win32_overlapped;
105 105

  
106
static tap_win32_overlapped_t tap_overlapped;
106
static a_tap_win32_overlapped tap_overlapped;
107 107

  
108
static tun_buffer_t* get_buffer_from_free_list(tap_win32_overlapped_t* const overlapped)
108
static a_tun_buffer* get_buffer_from_free_list(a_tap_win32_overlapped* const overlapped)
109 109
{
110
    tun_buffer_t* buffer = NULL;
110
    a_tun_buffer* buffer = NULL;
111 111
    WaitForSingleObject(overlapped->free_list_semaphore, INFINITE);
112 112
    EnterCriticalSection(&overlapped->free_list_cs);
113 113
    buffer = overlapped->free_list;
......
118 118
    return buffer;
119 119
}
120 120

  
121
static void put_buffer_on_free_list(tap_win32_overlapped_t* const overlapped, tun_buffer_t* const buffer)
121
static void put_buffer_on_free_list(a_tap_win32_overlapped* const overlapped, a_tun_buffer* const buffer)
122 122
{
123 123
    EnterCriticalSection(&overlapped->free_list_cs);
124 124
    buffer->next = overlapped->free_list;
......
127 127
    ReleaseSemaphore(overlapped->free_list_semaphore, 1, NULL);
128 128
}
129 129

  
130
static tun_buffer_t* get_buffer_from_output_queue(tap_win32_overlapped_t* const overlapped, const int block)
130
static a_tun_buffer* get_buffer_from_output_queue(a_tap_win32_overlapped* const overlapped, const int block)
131 131
{
132
    tun_buffer_t* buffer = NULL;
132
    a_tun_buffer* buffer = NULL;
133 133
    DWORD result, timeout = block ? INFINITE : 0L;
134 134

  
135 135
    // Non-blocking call
......
160 160
    return buffer;
161 161
}
162 162

  
163
static tun_buffer_t* get_buffer_from_output_queue_immediate (tap_win32_overlapped_t* const overlapped)
163
static a_tun_buffer* get_buffer_from_output_queue_immediate (a_tap_win32_overlapped* const overlapped)
164 164
{
165 165
    return get_buffer_from_output_queue(overlapped, 0);
166 166
}
167 167

  
168
static void put_buffer_on_output_queue(tap_win32_overlapped_t* const overlapped, tun_buffer_t* const buffer)
168
static void put_buffer_on_output_queue(a_tap_win32_overlapped* const overlapped, a_tun_buffer* const buffer)
169 169
{
170 170
    EnterCriticalSection(&overlapped->output_queue_cs);
171 171

  
......
393 393
                &status, sizeof (status), &len, NULL);
394 394
}
395 395

  
396
static void tap_win32_overlapped_init(tap_win32_overlapped_t* const overlapped, const HANDLE handle)
396
static void tap_win32_overlapped_init(a_tap_win32_overlapped* const overlapped, const HANDLE handle)
397 397
{
398 398
    overlapped->handle = handle;
399 399

  
......
436 436
    {
437 437
        unsigned index;
438 438
        for(index = 0; index < TUN_MAX_BUFFER_COUNT; index++) {
439
            tun_buffer_t* element = &overlapped->buffers[index];
439
            a_tun_buffer* element = &overlapped->buffers[index];
440 440
            element->next = overlapped->free_list;
441 441
            overlapped->free_list = element;
442 442
        }
......
447 447
        fprintf(stderr, "error creating tap_semaphore.\n");
448 448
}
449 449

  
450
static int tap_win32_write(tap_win32_overlapped_t *overlapped,
450
static int tap_win32_write(a_tap_win32_overlapped *overlapped,
451 451
                           const void *buffer, unsigned long size)
452 452
{
453 453
    unsigned long write_size;
......
481 481

  
482 482
static DWORD WINAPI tap_win32_thread_entry(LPVOID param)
483 483
{
484
    tap_win32_overlapped_t *overlapped = (tap_win32_overlapped_t*)param;
484
    a_tap_win32_overlapped *overlapped = (a_tap_win32_overlapped*)param;
485 485
    unsigned long read_size;
486 486
    BOOL result;
487 487
    DWORD dwError;
488
    tun_buffer_t* buffer = get_buffer_from_free_list(overlapped);
488
    a_tun_buffer* buffer = get_buffer_from_free_list(overlapped);
489 489

  
490 490

  
491 491
    for (;;) {
......
534 534
    return 0;
535 535
}
536 536

  
537
static int tap_win32_read(tap_win32_overlapped_t *overlapped,
537
static int tap_win32_read(a_tap_win32_overlapped *overlapped,
538 538
                          uint8_t **pbuf, int max_size)
539 539
{
540 540
    int size = 0;
541 541

  
542
    tun_buffer_t* buffer = get_buffer_from_output_queue_immediate(overlapped);
542
    a_tun_buffer* buffer = get_buffer_from_output_queue_immediate(overlapped);
543 543

  
544 544
    if(buffer != NULL) {
545 545
        *pbuf = buffer->buffer;
......
552 552
    return size;
553 553
}
554 554

  
555
static void tap_win32_free_buffer(tap_win32_overlapped_t *overlapped,
555
static void tap_win32_free_buffer(a_tap_win32_overlapped *overlapped,
556 556
                                  uint8_t *pbuf)
557 557
{
558
    tun_buffer_t* buffer = (tun_buffer_t*)pbuf;
558
    a_tun_buffer* buffer = (a_tun_buffer*)pbuf;
559 559
    put_buffer_on_free_list(overlapped, buffer);
560 560
}
561 561

  
562
static int tap_win32_open(tap_win32_overlapped_t **phandle,
562
static int tap_win32_open(a_tap_win32_overlapped **phandle,
563 563
                          const char *prefered_name)
564 564
{
565 565
    char device_path[256];
......
628 628

  
629 629
 typedef struct TAPState {
630 630
     VLANClientState *vc;
631
     tap_win32_overlapped_t *handle;
631
     a_tap_win32_overlapped *handle;
632 632
 } TAPState;
633 633

  
634 634
static void tap_cleanup(VLANClientState *vc)

Also available in: Unified diff