1/*
2 * Copyright (c) 2007, 2008, 2009, 2010, 2011 ETH Zurich.
3 * All rights reserved.
4 *
5 * This file is distributed under the terms in the attached LICENSE file.
6 * If you do not find this file, copies can be found by writing to:
7 * ETH Zurich D-INFK, Universitaetstrasse 6, CH-8092 Zurich. Attn: Systems Group.
8 */
9
10interface net_ports "Interface for port management" {
11    alias bufid uint64;
12    alias ipv4addr uint32;
13    alias qid uint64;
14    alias appid uint64;
15    typedef enum {PORT_TCP, PORT_UDP} port_type;
16
17    /* following one should not be used */
18    rpc get_ip_info(out ipv4addr ip,
19		    out ipv4addr gw,
20		    out ipv4addr mask);
21
22
23    rpc get_mac_address(out uint64 hwaddr);
24
25
26    rpc get_port(in port_type type,
27		 in bufid buffer_id_rx,
28		 in bufid buffer_id_tx,
29                 in appid appid,
30                 in qid queueid,
31                 out errval err,
32                 out uint16 port_no);
33
34    rpc bind_port(in port_type type,
35		  in uint16 port_no,
36		  in bufid buffer_id_rx,
37		  in bufid buffer_id_tx,
38                  in appid appid,
39                  in qid queueid,
40                  out errval err);
41
42    rpc close_port(in port_type type,
43		   in uint16 port_no,
44                   in appid appid,
45                   in qid queueid,
46                   out errval err);
47
48/*
49    rpc redirect(in port_type port,
50       		    in ipv4addr local_ip,
51		    in uint16 local_port,
52		    in ipv4addr remote_ip,
53		    in uint16 remote_port,
54		    in bufid buffer_id_rx,
55		    in bufid buffer_id_tx,
56                    in uint64 queueid,
57                    out errval err);
58
59    rpc redirect_pause(in port_type port,
60       		    in ipv4addr local_ip,
61		    in uint16 local_port,
62		    in ipv4addr remote_ip,
63		    in uint16 remote_port,
64		    in bufid buffer_id_rx,
65		    in bufid buffer_id_tx,
66                    in uint64 queueid,
67                    out errval err);
68*/
69};
70
71