File: libppp-compat.h

package info (click to toggle)
connman 1.45-3
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 7,056 kB
  • sloc: ansic: 101,490; sh: 4,985; python: 2,256; makefile: 488
file content (127 lines) | stat: -rw-r--r-- 2,600 bytes parent folder | download | duplicates (2)
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
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
/* Copyright (C) Eivind Naess, eivnaes@yahoo.com */
/* SPDX-License-Identifier: GPL-2.0-or-later */

#ifndef __LIBPPP_COMPAT_H__
#define __LIBPPP_COMPAT_H__

/* Define USE_EAPTLS compile with EAP TLS support against older pppd headers,
 * pppd >= 2.5.0 use PPP_WITH_EAPTLS and is defined in pppdconf.h */
#define USE_EAPTLS 1

/* Define INET6 to compile with IPv6 support against older pppd headers,
 * pppd >= 2.5.0 use PPP_WITH_IPV6CP and is defined in pppdconf.h */
#define INET6 1

/* PPP < 2.5.0 defines and exports VERSION which overlaps with current package VERSION define.
 * this silly macro magic is to work around that. */
#undef VERSION
#include <pppd/pppd.h>

#ifndef PPPD_VERSION
#define PPPD_VERSION VERSION
#endif

#include <pppd/fsm.h>
#include <pppd/ccp.h>
#include <pppd/eui64.h>
#include <pppd/ipcp.h>
#include <pppd/ipv6cp.h>
#include <pppd/eap.h>
#include <pppd/upap.h>

#ifdef HAVE_PPPD_CHAP_H
#include <pppd/chap.h>
#endif

#ifdef HAVE_PPPD_CHAP_NEW_H
#include <pppd/chap-new.h>
#endif

#ifdef HAVE_PPPD_CHAP_MS_H
#include <pppd/chap_ms.h>
#endif

#ifndef PPP_PROTO_CHAP
#define PPP_PROTO_CHAP 0xc223
#endif 

#ifndef PPP_PROTO_EAP
#define PPP_PROTO_EAP  0xc227
#endif


#if WITH_PPP_VERSION < PPP_VERSION(2,5,0)

static inline bool
debug_on (void)
{
	return debug;
}

static inline const char
*ppp_ipparam (void)
{
	return ipparam;
}

static inline int
ppp_ifunit (void)
{
	return ifunit;
}

static inline const char *
ppp_ifname (void)
{
	return ifname;
}

static inline int
ppp_get_mtu (int idx)
{
	return netif_get_mtu(idx);
}

typedef enum ppp_notify
{
    NF_PID_CHANGE,
    NF_PHASE_CHANGE,
    NF_EXIT,
    NF_SIGNALED,
    NF_IP_UP,
    NF_IP_DOWN,
    NF_IPV6_UP,
    NF_IPV6_DOWN,
    NF_AUTH_UP,
    NF_LINK_DOWN,
    NF_FORK,
    NF_MAX_NOTIFY
} ppp_notify_t;

typedef void (ppp_notify_fn) (void *ctx, int arg);

static inline void
ppp_add_notify (ppp_notify_t type, ppp_notify_fn *func, void *ctx)
{
	struct notifier **list[NF_MAX_NOTIFY] = {
		[NF_PID_CHANGE  ] = &pidchange,
		[NF_PHASE_CHANGE] = &phasechange,
		[NF_EXIT        ] = &exitnotify,
		[NF_SIGNALED    ] = &sigreceived,
		[NF_IP_UP       ] = &ip_up_notifier,
		[NF_IP_DOWN     ] = &ip_down_notifier,
		[NF_IPV6_UP     ] = &ipv6_up_notifier,
		[NF_IPV6_DOWN   ] = &ipv6_down_notifier,
		[NF_AUTH_UP     ] = &auth_up_notifier,
		[NF_LINK_DOWN   ] = &link_down_notifier,
		[NF_FORK        ] = &fork_notifier,
	};

	struct notifier **notify = list[type];
	if (notify) {
		add_notifier(notify, func, ctx);
	}
}

#endif /* #if WITH_PPP_VERSION < PPP_VERSION(2,5,0) */
#endif /* #if__LIBPPP_COMPAT_H__ */