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
68
69
70
|
$NetBSD: patch-ad,v 1.4 2006/03/30 02:47:01 markd Exp $
--- kppp/pppstats.cpp.orig 2006-03-17 23:12:34.000000000 +1300
+++ kppp/pppstats.cpp
@@ -54,7 +54,11 @@
#include <arpa/inet.h>
#include <unistd.h>
#include <netinet/in.h>
+#ifdef __DragonFly__
+#include <net/ppp_layer/ppp_defs.h>
+#else
#include <net/ppp_defs.h>
+#endif
#include "config.h"
#include "pppstats.h"
@@ -70,6 +74,9 @@
#ifdef HAVE_LINUX_IF_PPP_H
#include <linux/if.h>
#include <linux/if_ppp.h>
+ #elif defined(__DragonFly__)
+ #include <net/if.h>
+ #include <net/ppp/if_ppp.h>
#endif
#else
#include <net/if.h>
@@ -218,26 +225,29 @@ bool PPPStats::initStats() {
strlcpy(ifr.ifr_name, unitName, sizeof(ifr.ifr_name));
+ local_ip_address = "";
if (ioctl(s, SIOCGIFADDR, &ifr) < 0) {
- }
+ kdDebug(5002) << "Cannot get ip address" << endl;
+ } else {
+ sinp = (struct sockaddr_in*)&ifr.ifr_addr;
- sinp = (struct sockaddr_in*)&ifr.ifr_addr;
+ if(sinp->sin_addr.s_addr)
+ local_ip_address = inet_ntoa(sinp->sin_addr);
- if(sinp->sin_addr.s_addr)
- local_ip_address = inet_ntoa(sinp->sin_addr);
- else
- local_ip_address = "";
- kdDebug(5002) << "Local IP: " << local_ip_address << endl;
+ kdDebug(5002) << "Local IP: " << local_ip_address << endl;
+ }
- (void) ioctl(s, SIOCGIFDSTADDR, &ifr);
+ remote_ip_address = "";
+ if (ioctl(s, SIOCGIFDSTADDR, &ifr) < 0) {
+ kdDebug(5002) << "Cannot get remote ip address" << endl;
+ } else {
+ sinp = (struct sockaddr_in*)&ifr.ifr_dstaddr;
- sinp = (struct sockaddr_in*)&ifr.ifr_dstaddr;
+ if(sinp->sin_addr.s_addr)
+ remote_ip_address = inet_ntoa(sinp->sin_addr);
- if(sinp->sin_addr.s_addr)
- remote_ip_address = inet_ntoa(sinp->sin_addr);
- else
- remote_ip_address = "";
- kdDebug(5002) << "Remote IP: " << remote_ip_address << endl;
+ kdDebug(5002) << "Remote IP: " << remote_ip_address << endl;
+ }
return true;
|