File: iptest.cc

package info (click to toggle)
wvstreams 4.6.1-1
  • links: PTS
  • area: main
  • in suites: squeeze
  • size: 6,820 kB
  • ctags: 7,837
  • sloc: cpp: 64,203; ansic: 4,154; sh: 4,094; makefile: 549; perl: 402
file content (53 lines) | stat: -rw-r--r-- 1,196 bytes parent folder | download | duplicates (9)
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
/*
 * Worldvisions Weaver Software:
 *   Copyright (C) 1997-2003 Net Integration Technologies, Inc.
 *
 * WvIPRawStream test.  Waits for data.
 */

#include <netinet/in.h>

#include "wvistreamlist.h"
#include "wvlog.h"
#include "wvipraw.h"

int main(int argc, char **argv)
{
    WvLog err("iptest", WvLog::Error);
    WvIPAddr nothing;
    WvIPAddr remaddr(argc > 1 ? argv[1] : "127.0.0.1");
    WvIPRawStream sock(nothing, remaddr, IPPROTO_ESP);
    
    sock.enable_broadcasts();
    
    err(WvLog::Info, "Local address is %s.\n", *sock.local());
    
    wvcon->autoforward(sock);
    sock.autoforward(err);
    
    WvIStreamList l;
    l.append(wvcon, false, "wvcon");
    l.append(&sock, false, "socket");
    
    while (wvcon->isok() && sock.isok())
    {
	sock.setdest(remaddr);
	if (l.select(1000))
	{
	    if (wvcon->select(0))
		wvcon->callback();
	    else if (sock.select(0))
	    {
		sock.callback();
		err(WvLog::Info, "    (remote: %s)\n", *sock.src());
	    }
	}
    }
    
    if (!wvcon->isok() && wvcon->geterr())
	err("stdin: %s\n", strerror(wvcon->geterr()));
    else if (!sock.isok() && sock.geterr())
	err("socket: %s\n", strerror(sock.geterr()));
    
    return 0;
}