diff options
author | Dmitry Kozlov <xeb@mail.ru> | 2016-06-07 20:41:14 +0300 |
---|---|---|
committer | Dmitry Kozlov <xeb@mail.ru> | 2016-06-07 20:41:14 +0300 |
commit | 7fe9078e44b13c030e4c9ca55cc431f2811efc5a (patch) | |
tree | 8226aa14351319a221d5e62524ff05071b1502b4 /accel-pppd | |
parent | 429ca0e6188594e5ccbce639d2d22576e5256e62 (diff) | |
parent | e3e804a0266840ef0a9cc13c4f6d1ac8fc68c676 (diff) | |
download | accel-ppp-7fe9078e44b13c030e4c9ca55cc431f2811efc5a.tar.gz accel-ppp-7fe9078e44b13c030e4c9ca55cc431f2811efc5a.zip |
Merge branch 'master' of ssh://git.code.sf.net/p/accel-ppp/code
Diffstat (limited to 'accel-pppd')
-rw-r--r-- | accel-pppd/cli/std_cmd.c | 2 | ||||
-rw-r--r-- | accel-pppd/ctrl/ipoe/CMakeLists.txt | 2 | ||||
-rw-r--r-- | accel-pppd/ctrl/pppoe/CMakeLists.txt | 2 | ||||
-rw-r--r-- | accel-pppd/extra/pppd_compat.c | 4 | ||||
l---------[-rw-r--r--] | accel-pppd/include/ppp_auth.h | 38 | ||||
-rw-r--r-- | accel-pppd/ppp/ppp_ifcfg.c | 182 | ||||
-rw-r--r-- | accel-pppd/ppp/ppp_notify.c | 54 | ||||
-rw-r--r-- | accel-pppd/ppp/ppp_pd.c | 14 | ||||
-rw-r--r-- | accel-pppd/radius/radius.c | 2 | ||||
-rw-r--r-- | accel-pppd/radius/serv.c | 2 |
10 files changed, 11 insertions, 291 deletions
diff --git a/accel-pppd/cli/std_cmd.c b/accel-pppd/cli/std_cmd.c index 62327f92..500102b0 100644 --- a/accel-pppd/cli/std_cmd.c +++ b/accel-pppd/cli/std_cmd.c @@ -20,7 +20,7 @@ void core_restart(int); static int show_stat_exec(const char *cmd, char * const *fields, int fields_cnt, void *client) { struct timespec ts; - time_t dt; + unsigned long dt; int day,hour; char statm_fname[128]; FILE *f; diff --git a/accel-pppd/ctrl/ipoe/CMakeLists.txt b/accel-pppd/ctrl/ipoe/CMakeLists.txt index f15365ab..73dbb382 100644 --- a/accel-pppd/ctrl/ipoe/CMakeLists.txt +++ b/accel-pppd/ctrl/ipoe/CMakeLists.txt @@ -24,5 +24,7 @@ IF (LUA) TARGET_LINK_LIBRARIES(ipoe ${LUA_LIBRARIES}) ENDIF(LUA) TARGET_LINK_LIBRARIES(ipoe vlan-mon) +set_property(TARGET ipoe PROPERTY CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set_property(TARGET ipoe PROPERTY INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/accel-ppp) INSTALL(TARGETS ipoe LIBRARY DESTINATION lib${LIB_SUFFIX}/accel-ppp) diff --git a/accel-pppd/ctrl/pppoe/CMakeLists.txt b/accel-pppd/ctrl/pppoe/CMakeLists.txt index 5e1cbdc6..808cd513 100644 --- a/accel-pppd/ctrl/pppoe/CMakeLists.txt +++ b/accel-pppd/ctrl/pppoe/CMakeLists.txt @@ -14,5 +14,7 @@ ENDIF(RADIUS) ADD_LIBRARY(pppoe SHARED ${sources}) TARGET_LINK_LIBRARIES(pppoe vlan-mon) +set_property(TARGET pppoe PROPERTY CMAKE_BUILD_WITH_INSTALL_RPATH FALSE) +set_property(TARGET pppoe PROPERTY INSTALL_RPATH ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/accel-ppp) INSTALL(TARGETS pppoe LIBRARY DESTINATION lib${LIB_SUFFIX}/accel-ppp) diff --git a/accel-pppd/extra/pppd_compat.c b/accel-pppd/extra/pppd_compat.c index 2956624d..2c8460f8 100644 --- a/accel-pppd/extra/pppd_compat.c +++ b/accel-pppd/extra/pppd_compat.c @@ -468,7 +468,7 @@ static void write_radattr(struct pppd_compat_pd *pd, struct rad_packet_t *pack) fprintf(f, "%i.%i.%i.%i\n", (addr >> 24) & 0xff, (addr >> 16) & 0xff, (addr >> 8) & 0xff, addr & 0xff); break; case ATTR_TYPE_DATE: - fprintf(f, "%lu\n", attr->val.date); + fprintf(f, "%lu\n", (unsigned long) attr->val.date); break; } } @@ -560,7 +560,7 @@ static void fill_env(char **env, char *mem, struct pppd_compat_pd *pd) if (pd->ses->stop_time) { env[n++] = mem; - mem += sprintf(mem, "CONNECT_TIME=%lu", pd->ses->stop_time - pd->ses->start_time) + 1; + mem += sprintf(mem, "CONNECT_TIME=%lu", (unsigned long)(pd->ses->stop_time - pd->ses->start_time)) + 1; env[n++] = mem; mem += sprintf(mem, "BYTES_SENT=%" PRIu64, tx_bytes) + 1; env[n++] = mem; diff --git a/accel-pppd/include/ppp_auth.h b/accel-pppd/include/ppp_auth.h index 839a8817..527c8538 100644..120000 --- a/accel-pppd/include/ppp_auth.h +++ b/accel-pppd/include/ppp_auth.h @@ -1,37 +1 @@ -#ifndef PPP_AUTH_H -#define PPP_AUTH_H - -#include "list.h" - -struct ppp_auth_handler_t; - -struct auth_data_t -{ - struct list_head entry; - int proto; - int state; - struct ppp_auth_handler_t *h; -}; - -struct ppp_auth_handler_t -{ - struct list_head entry; - const char *name; - struct auth_data_t* (*init)(struct ppp_t*); - int (*send_conf_req)(struct ppp_t*, struct auth_data_t*, uint8_t*); - int (*recv_conf_req)(struct ppp_t*, struct auth_data_t*, uint8_t*); - int (*start)(struct ppp_t*, struct auth_data_t*); - int (*finish)(struct ppp_t*, struct auth_data_t*); - void (*free)(struct ppp_t*,struct auth_data_t*); - int (*check)(uint8_t *); - int (*restart)(struct ppp_t*,struct auth_data_t*); -}; - -int ppp_auth_register_handler(struct ppp_auth_handler_t*); - -int ppp_auth_succeeded(struct ppp_t *ppp, char *username); -void ppp_auth_failed(struct ppp_t *ppp, char *username); -int ppp_auth_restart(struct ppp_t *ppp); - -#endif - +../ppp/ppp_auth.h
\ No newline at end of file diff --git a/accel-pppd/ppp/ppp_ifcfg.c b/accel-pppd/ppp/ppp_ifcfg.c deleted file mode 100644 index 5f767219..00000000 --- a/accel-pppd/ppp/ppp_ifcfg.c +++ /dev/null @@ -1,182 +0,0 @@ -#include <unistd.h> -#include <fcntl.h> -#include <stdio.h> -#include <stdlib.h> -#include <stdint.h> -#include <string.h> -#include <errno.h> -#include <limits.h> -#include <arpa/inet.h> -#include <sys/socket.h> -#include <sys/ioctl.h> -#include "linux_ppp.h" - -#include "triton.h" -#include "events.h" -#include "ppp.h" -#include "ipdb.h" -#include "log.h" - -// from /usr/include/linux/ipv6.h -struct in6_ifreq { - struct in6_addr ifr6_addr; - __u32 ifr6_prefixlen; - int ifr6_ifindex; -}; - -static void devconf(struct ppp_t *ppp, const char *attr, const char *val) -{ - int fd; - char fname[PATH_MAX]; - - sprintf(fname, "/proc/sys/net/ipv6/conf/%s/%s", ppp->ifname, attr); - fd = open(fname, O_WRONLY); - if (!fd) { - log_ppp_error("ppp: failed to open '%s': %s\n", fname, strerror(errno)); - return; - } - - write(fd, val, strlen(val)); - - close(fd); -} - -static void build_addr(struct ipv6db_addr_t *a, uint64_t intf_id, struct in6_addr *addr) -{ - memcpy(addr, &a->addr, sizeof(*addr)); - - if (a->prefix_len <= 64) - *(uint64_t *)(addr->s6_addr + 8) = intf_id; - else - *(uint64_t *)(addr->s6_addr + 8) |= intf_id & ((1 << (128 - a->prefix_len)) - 1); -} - -void ppp_ifup(struct ppp_t *ppp) -{ - struct ipv6db_addr_t *a; - struct ifreq ifr; - struct in6_ifreq ifr6; - struct npioctl np; - struct sockaddr_in addr; - - triton_event_fire(EV_SES_ACCT_START, ppp); - if (ppp->stop_time) - return; - - triton_event_fire(EV_SES_PRE_UP, ppp); - if (ppp->stop_time) - return; - - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, ppp->ifname); - - if (ppp->ses.ipv4) { - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - addr.sin_addr.s_addr = ppp->ses.ipv4->addr; - memcpy(&ifr.ifr_addr,&addr,sizeof(addr)); - - if (net->sock_ioctl(SIOCSIFADDR, &ifr)) - log_ppp_error("ppp: failed to set IPv4 address: %s\n", strerror(errno)); - - addr.sin_addr.s_addr = ppp->ses.ipv4->peer_addr; - memcpy(&ifr.ifr_dstaddr,&addr,sizeof(addr)); - - if (net->sock_ioctl(SIOCSIFDSTADDR, &ifr)) - log_ppp_error("ppp: failed to set peer IPv4 address: %s\n", strerror(errno)); - } - - if (ppp->ses.ipv6) { - devconf(ppp, "accept_ra", "0"); - devconf(ppp, "autoconf", "0"); - devconf(ppp, "forwarding", "1"); - - memset(&ifr6, 0, sizeof(ifr6)); - ifr6.ifr6_addr.s6_addr32[0] = htonl(0xfe800000); - *(uint64_t *)(ifr6.ifr6_addr.s6_addr + 8) = ppp->ses.ipv6->intf_id; - ifr6.ifr6_prefixlen = 64; - ifr6.ifr6_ifindex = ppp->ifindex; - - if (ioctl(sock6_fd, SIOCSIFADDR, &ifr6)) - log_ppp_error("ppp: failed to set LL IPv6 address: %s\n", strerror(errno)); - - list_for_each_entry(a, &ppp->ses.ipv6->addr_list, entry) { - if (a->prefix_len == 128) - continue; - - build_addr(a, ppp->ses.ipv6->intf_id, &ifr6.ifr6_addr); - ifr6.ifr6_prefixlen = a->prefix_len; - - if (ioctl(sock6_fd, SIOCSIFADDR, &ifr6)) - log_ppp_error("ppp: failed to add IPv6 address: %s\n", strerror(errno)); - } - } - - if (net->sock_ioctl(SIOCGIFFLAGS, &ifr)) - log_ppp_error("ppp: failed to get interface flags: %s\n", strerror(errno)); - - ifr.ifr_flags |= IFF_UP | IFF_POINTOPOINT; - - if (net->sock_ioctl(SIOCSIFFLAGS, &ifr)) - log_ppp_error("ppp: failed to set interface flags: %s\n", strerror(errno)); - - if (ppp->ses.ipv4) { - np.protocol = PPP_IP; - np.mode = NPMODE_PASS; - - if (net->ppp_ioctl(ppp->unit_fd, PPPIOCSNPMODE, &np)) - log_ppp_error("ppp: failed to set NP (IPv4) mode: %s\n", strerror(errno)); - } - - if (ppp->ses.ipv6) { - np.protocol = PPP_IPV6; - np.mode = NPMODE_PASS; - - if (net->ppp_ioctl(ppp->unit_fd, PPPIOCSNPMODE, &np)) - log_ppp_error("ppp: failed to set NP (IPv6) mode: %s\n", strerror(errno)); - } - - ppp->ses.ctrl->started(ppp); - - triton_event_fire(EV_SES_STARTED, ppp); -} - -void __export ppp_ifdown(struct ppp_t *ppp) -{ - struct ifreq ifr; - struct sockaddr_in addr; - struct in6_ifreq ifr6; - struct ipv6db_addr_t *a; - - memset(&ifr, 0, sizeof(ifr)); - strcpy(ifr.ifr_name, ppp->ifname); - net->sock_ioctl(SIOCSIFFLAGS, &ifr); - - if (ppp->ses.ipv4) { - memset(&addr, 0, sizeof(addr)); - addr.sin_family = AF_INET; - memcpy(&ifr.ifr_addr,&addr,sizeof(addr)); - net->sock_ioctl(SIOCSIFADDR, &ifr); - } - - if (ppp->ses.ipv6) { - memset(&ifr6, 0, sizeof(ifr6)); - ifr6.ifr6_addr.s6_addr32[0] = htonl(0xfe800000); - *(uint64_t *)(ifr6.ifr6_addr.s6_addr + 8) = ppp->ses.ipv6->intf_id; - ifr6.ifr6_prefixlen = 64; - ifr6.ifr6_ifindex = ppp->ifindex; - - ioctl(sock6_fd, SIOCDIFADDR, &ifr6); - - list_for_each_entry(a, &ppp->ses.ipv6->addr_list, entry) { - if (a->prefix_len == 128) - continue; - - build_addr(a, ppp->ses.ipv6->intf_id, &ifr6.ifr6_addr); - ifr6.ifr6_prefixlen = a->prefix_len; - - ioctl(sock6_fd, SIOCDIFADDR, &ifr6); - } - } -} - diff --git a/accel-pppd/ppp/ppp_notify.c b/accel-pppd/ppp/ppp_notify.c deleted file mode 100644 index ad9fd1fc..00000000 --- a/accel-pppd/ppp/ppp_notify.c +++ /dev/null @@ -1,54 +0,0 @@ -#include "ppp.h" - -static LIST_HEAD(notified_list); - -void __export ppp_register_notified(struct ppp_notified_t *n) -{ - list_add_tail(&n->entry, ¬ified_list); -} - -void __export ppp_unregister_notified(struct ppp_notified_t *n) -{ - list_del(&n->entry); -} - -void ppp_notify_starting(struct ppp_t *ppp) -{ - struct ppp_notified_t *n; - - list_for_each_entry(n, ¬ified_list, entry) { - if (n->starting) - n->starting(n, ppp); - } -} - -void ppp_notify_started(struct ppp_t *ppp) -{ - struct ppp_notified_t *n; - - list_for_each_entry(n, ¬ified_list, entry) { - if (n->started) - n->started(n, ppp); - } -} - -void ppp_notify_finished(struct ppp_t *ppp) -{ - struct ppp_notified_t *n; - - list_for_each_entry(n, ¬ified_list, entry) { - if (n->finished) - n->finished(n, ppp); - } -} - -void ppp_notify_finishing(struct ppp_t *ppp) -{ - struct ppp_notified_t *n; - - list_for_each_entry(n, ¬ified_list, entry) { - if (n->finishing) - n->finishing(n, ppp); - } -} - diff --git a/accel-pppd/ppp/ppp_pd.c b/accel-pppd/ppp/ppp_pd.c deleted file mode 100644 index c33ae968..00000000 --- a/accel-pppd/ppp/ppp_pd.c +++ /dev/null @@ -1,14 +0,0 @@ -#include "ppp.h" - -#include "memdebug.h" - -int ppp_store_pd(struct ppp_t *ppp, pd_key_t key, void *data) -{ - struct ppp_pd_t *pd; - - list_for_each_entry(pd, &ppp->pd_list, entry) - if (pd->key == key) - return -1; - - -} diff --git a/accel-pppd/radius/radius.c b/accel-pppd/radius/radius.c index c5537086..c8e30ebd 100644 --- a/accel-pppd/radius/radius.c +++ b/accel-pppd/radius/radius.c @@ -216,12 +216,14 @@ int rad_proc_attrs(struct rad_req_t *req) break; case Framed_IPv6_Prefix: a = _malloc(sizeof(*a)); + memset(a, 0, sizeof(*a)); a->prefix_len = attr->val.ipv6prefix.len; a->addr = attr->val.ipv6prefix.prefix; list_add_tail(&a->entry, &rpd->ipv6_addr.addr_list); break; case Delegated_IPv6_Prefix: a = _malloc(sizeof(*a)); + memset(a, 0, sizeof(*a)); a->prefix_len = attr->val.ipv6prefix.len; a->addr = attr->val.ipv6prefix.prefix; list_add_tail(&a->entry, &rpd->ipv6_dp.prefix_list); diff --git a/accel-pppd/radius/serv.c b/accel-pppd/radius/serv.c index 9b59d04b..d40bff10 100644 --- a/accel-pppd/radius/serv.c +++ b/accel-pppd/radius/serv.c @@ -69,7 +69,7 @@ static struct rad_server_t *__rad_server_get(int type, struct rad_server_t *excl if ((s->backup < s0->backup) || ((s->backup == s0->backup) && - ((s->client_cnt[0] + s->client_cnt[1])/s->weight < (s0->client_cnt[0] + s0->client_cnt[1])/s0->weight))) + ((s->client_cnt[0] + s->client_cnt[1])*s0->weight < (s0->client_cnt[0] + s0->client_cnt[1])*s->weight))) s0 = s; } |