summaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2016-05-11triton: implement list_replace*()Guillaume Nault
Add list_replace() and list_replace_init(), as defined in Linux kernel sources. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2016-05-11iprange: rework ip range parsing functionsGuillaume Nault
The previous parsing functions had a few problems: * They did accept negative numbers in addresses (e.g. 192.0.2.-5). * They relied on C undefined behaviour for detecting /0 prefix length: "mask = htonl(~((1 << (32 - m)) - 1)" was wrong for m = 0, because that resulted in a left shift of 32 bits, on a 32 bit wide value (the right operand of a bitwise shift operator must be strictly smaller than the width of the promoted left operand). * They misinterpreted /32 prefixes as disable requests. In fact, due to the undefined behaviour described above, /0 and /32 prefix lengths were represented in the same way by parse1(), that is, with an iprange_t structure where ->begin == ->end. Therefore load_ranges() had no way to distinguish between them and did disable the module in both cases. This patch fixes these issues and brings the following improvements: * It uses getaddrinfo() to parse IP addresses, so it accept (almost) all IPv4 representations and is more easily extensible to IPv6 in the future. * It warns when the IP address used in CIDR notation is not the first address in the range (e.g. the first address of 192.0.2.1/24 is 192.0.2.0, not 192.0.2.1). * It doesn't _exit() on parsing failures, thus making the functions usable in an EV_CONFIG_RELOAD handler. While there, the unfinished tunnel_ranges code, which was already commented, has been removed. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2016-05-02fixed typo in the previous commitDmitry Kozlov
2016-04-30more verbose interface rename error messageDmitry Kozlov
2016-04-30radius: add Delegated-IPv6-Prefix to accounting packetsDmitry Kozlov
2016-04-30Merge branch 'master' of ssh://git.code.sf.net/p/accel-ppp/codeDmitry Kozlov
2016-04-28cli: flush pending data before disconnectingGuillaume Nault
The telnet and tcp servers disconnect as soon as they receive the 'exit' command or see a disconnection from the client. In this case, all data queued for transmission are lost. This can lead to truncated output when big amount of data is being sent. For example, on a moderately loaded server with a few thouthands connections, the output of the 'accel-cmd show sessions' command can be truncated. The problem is that accel-cmd sends the 'show sessions' command, followed by 'exit'. It does so because it has to stop running once all data has been received from the server. But it never knows whether more data are going to arrive. Disconnection must then come from the server, hence the use of 'exit' (although the same effect could be achieved with shutdown(SHUT_WR)). The telnet and tcp modules behave very similarly and are modified in the same way: * For a soft disconnection, cln_read() doesn't call disconnect() anymore if there are data queued for transmission. Instead it sets the 'disconnect' flag and stops listening to its peer (no need to process further messages). * cln_write() checks the 'disconnect' flag once it has sent all pending data and actually performs the disconnection if necessary. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2016-04-28cli: fix data output miss-orderingGuillaume Nault
In tcp and telnet backends, the first buffer been queued is directly pointed to by cln->xmit_buf. It's not added to cln->xmit_queue. Therefore testing if ->xmit_queue is empty doesn't reliably tells if data has already been queued. We should test if ->xmit_buf is non-NULL instead. This is reliable because ->xmit_buf is re-filled with the first buffer from ->xmit_queue after every successful write(). Failure to properly check if data has already been queued can lead to message miss-ordering because cli_client_send() or telnet_send() will try to directly write() their input buffer, effectively bypassing the one previously queued up in ->xmit_buf. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2016-04-28cli: fix partial line duplication and truncationGuillaume Nault
When queueing output data for later write(), the 'n' first bytes of the buffer have already been sent (we have n > 0 if EAGAIN was returned after some other write() calls succeeded). Therefore, we need to skip these bytes when initialising the buffer to be queued. The size passed to memcpy() did already take that space into account. Signed-off-by: Guillaume Nault <g.nault@alphalink.fr>
2016-04-17preparation for DPDK intergation (part 7)Dmitry Kozlov
2016-04-15preparation for DPDK intergation (part 6)Dmitry Kozlov
2016-04-13logwtmp: check for username presenceDmitry Kozlov
2016-04-13ppp: removed mtu/mru size warningsDmitry Kozlov
2016-04-13ppp: increase input buffer sizeDmitry Kozlov
2016-04-12ipoe: generate EUI-64 interface identifier for ipv6 addressesDmitry Kozlov
2016-04-12ipv6: remove ipv6 address and routes on session terminationDmitry Kozlov
2016-04-11Revert "pppoe: do not negotiate LCP MRU option if it is larger than 1492"Dmitry Kozlov
This reverts commit fc098b3062badfd802f91241533069cad4886b6f.
2016-04-10Merge branch 'master' of ssh://git.code.sf.net/p/accel-ppp/codeDmitry Kozlov
2016-04-10pppoe: do not negotiate LCP MRU option if it is larger than 1492Dmitry Kozlov
2016-04-07link pppoe and ipoe with vlan-mon libraryDmitry Kozlov
2016-04-06radius: do not mark request as active if send function failsDmitry Kozlov
2016-04-05ipoe: continue to reply to dhcp requests on active sessions when "shutdown ↵Dmitry Kozlov
soft" is active
2016-04-05improved logging: if session's interface is empty log ctrl's interfaceDmitry Kozlov
2016-04-05pppoe: add interface name to log messagesDmitry Kozlov
2016-04-05ipoe_mod: code simplificationDmitry Kozlov
2016-04-05iputils: check for IFLA_INFO_KIND presenceDmitry Kozlov
2016-04-04ipoe_mod: restored ip-mac binding functionDmitry Kozlov
2016-04-04Revert "vlan_mon: recalculate busy mask on vlan mask update"Dmitry Kozlov
This reverts commit f67292499b20f599f2bd744d2dcf0f6779581787.
2016-04-04ipoe: remove stale backup.cDmitry Kozlov
2016-04-04pppoe: stop "vlan timeout" timer on new connectionDmitry Kozlov
2016-04-04vlan_mon: fixed panic on latest kernelsDmitry Kozlov
2016-04-04vlan_mon: fixed bugDmitry Kozlov
2016-04-04vlan_mon: make possible to work other module after message "vlan not started"Dmitry Kozlov
2016-04-04vlan_mon: recalculate busy mask on vlan mask updateDmitry Kozlov
2016-04-04vlan_mon: fixes for previous commitDmitry Kozlov
2016-04-04vlan_mon: introduced autoclean module parameterDmitry Kozlov
if autoclean=1 then vlan_mon will delete all vlan interfaces created by previous accel-pppd run f.e. vlan_mon cleans created interfaces if accel-pppd restarts
2016-04-04ipoe,pppoe,vlan_mon: deleted conditions to simultaneous start ipoe and pppoe ↵Dmitry Kozlov
on same interfaces (started by vlan_mon)
2016-04-04pppoe: add support for PPP-Max-Payload tag (RFC 4638)Dmitry Kozlov
2016-04-02for single-session=deny make early check for duplicate username (before ↵Dmitry Kozlov
calling radius)
2016-04-02ipoe_mod: ignore 0.0.0.0 and 255.255.255.255 addressesDmitry Kozlov
2016-04-02ipoe: ignore start=auto for shared=1 interfacesDmitry Kozlov
2016-04-01shaper: fix wrong priority value for skbeditDmitry Kozlov
2016-04-01shaper: implemented internal class id mapDmitry Kozlov
Before this commit shaper used ses->unit_idx as class id, but it is not unique. This commit introduces internal map to manage unique class ids
2016-03-31pppoe: disc.c: add missing initialization of context's before_switch functionDmitry Kozlov
2016-03-31pppoe: fix typoDmitry Kozlov
2016-03-31dhcpv6: fix typoDmitry Kozlov
2016-03-31vlan_mon: clean state on startDmitry Kozlov
2016-03-29vlan_mon: use local netlink socket in utility functionsDmitry Kozlov
2016-03-29ipoe: populate existing vlan interfaces by vlan info when vlan monitor event ↵Dmitry Kozlov
occurs
2016-03-29ipoe_mod: do not redirect arp requests to virtual ipoe interfacesDmitry Kozlov