Line data Source code
1 : /*
2 : Copyright (c) 2007, Adobe Systems, Incorporated
3 : Copyright (c) 2013, Mozilla
4 :
5 : All rights reserved.
6 :
7 : Redistribution and use in source and binary forms, with or without
8 : modification, are permitted provided that the following conditions are
9 : met:
10 :
11 : * Redistributions of source code must retain the above copyright
12 : notice, this list of conditions and the following disclaimer.
13 :
14 : * Redistributions in binary form must reproduce the above copyright
15 : notice, this list of conditions and the following disclaimer in the
16 : documentation and/or other materials provided with the distribution.
17 :
18 : * Neither the name of Adobe Systems, Network Resonance, Mozilla nor
19 : the names of its contributors may be used to endorse or promote
20 : products derived from this software without specific prior written
21 : permission.
22 :
23 : THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
24 : "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
25 : LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
26 : A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
27 : OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
28 : SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
29 : LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
30 : DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
31 : THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
32 : (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
33 : OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
34 : */
35 :
36 : #include <nr_api.h>
37 : #include <string.h>
38 : #include "local_addr.h"
39 :
40 0 : int nr_local_addr_copy(nr_local_addr *to, nr_local_addr *from)
41 : {
42 : int r,_status;
43 :
44 0 : if (r=nr_transport_addr_copy(&(to->addr), &(from->addr))) {
45 0 : ABORT(r);
46 : }
47 0 : to->interface = from->interface;
48 :
49 0 : _status=0;
50 : abort:
51 0 : return(_status);
52 : }
53 :
54 0 : int nr_local_addr_fmt_info_string(nr_local_addr *addr, char *buf, int len)
55 : {
56 0 : int addr_type = addr->interface.type;
57 0 : const char *vpn = (addr_type & NR_INTERFACE_TYPE_VPN) ? "VPN on " : "";
58 :
59 0 : const char *type = (addr_type & NR_INTERFACE_TYPE_WIRED) ? "wired" :
60 0 : (addr_type & NR_INTERFACE_TYPE_WIFI) ? "wifi" :
61 0 : (addr_type & NR_INTERFACE_TYPE_MOBILE) ? "mobile" :
62 : "unknown";
63 :
64 0 : snprintf(buf, len, "%s%s, estimated speed: %d kbps",
65 : vpn, type, addr->interface.estimated_speed);
66 0 : buf[len - 1] = '\0';
67 0 : return (0);
68 : }
|