<feed xmlns='http://www.w3.org/2005/Atom'>
<title>accel-ppp.git/accel-pppd/accel-ppp.conf, branch sstp-alloc-invariant</title>
<subtitle>High performance PPTP/L2TP/SSTP/PPPoE/IPoE server for Linux (mirror of https://github.com/accel-ppp/accel-ppp.git)
</subtitle>
<id>https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=sstp-alloc-invariant</id>
<link rel='self' href='https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=sstp-alloc-invariant'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/'/>
<updated>2026-07-10T12:37:37+00:00</updated>
<entry>
<title>docs: synchronize config sample and man page</title>
<updated>2026-07-10T12:37:37+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-07-10T08:57:16+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=ab0f1684eb70ce6db94668715c7fb5d60c6d3e33'/>
<id>urn:sha1:ab0f1684eb70ce6db94668715c7fb5d60c6d3e33</id>
<content type='text'>
</content>
</entry>
<entry>
<title>ippool/ipv6pool: bitmap allocator + online reconfiguration</title>
<updated>2026-06-03T11:57:45+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-06-02T23:23:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=8afec90643a6e6d923032ae5c50d6c18e7a8b0c3'/>
<id>urn:sha1:8afec90643a6e6d923032ae5c50d6c18e7a8b0c3</id>
<content type='text'>
Replace the pre-generated free-list (one heap node per allocatable
address/prefix) with a per-pool bitmap. Each pool holds a list of
contiguous ranges, each range owning one bitmap (1 bit per unit);
a lease is a small per-session malloc wrapper around the ipdb item,
so pool memory is no longer shared or mutated by sessions.

Memory now scales with capacity at ~1 bit/unit instead of ~96B (v4) /
~128B (v6) per unit; startup, `show ippool`, and backup-restore are
O(1) instead of O(N)/O(N*M). Oversized IPv6 ranges (prefix_len-mask
&gt; 24) are rejected at parse time instead of OOMing in the malloc loop.

The ipdb_t vtable, the owner-based put dispatch, ipdb.h structs, and
struct ap_session are unchanged; RADIUS and chap-secrets backends are
untouched (reconcile filters by owner).

Preserved behavior: p2p/net30 allocators (via a step/gw_offset/
peer_offset geometry triple), shuffle (randomized scan start), named
pools, next-chains, gw-ip-address, RADIUS pool-name attrs, and the
USE_BACKUP save/restore path. `gw=` is now accepted-and-ignored (its
per-address local gateway was already overridden at allocation time).

New: online reconfiguration. An EV_CONFIG_RELOAD handler rebuilds the
pool set and reconciles live sessions (sessions are the source of
truth, the bitmap is rebuilt from them) under
pool_set_rwlock(write) -&gt; ses_lock(read) -&gt; per-pool spinlock.
Sessions whose address left the pools are handled per a new
`reload-orphan = keep|disconnect` knob (default keep); foreign
in-range addresses are reserved to avoid duplicate assignment.

Adds extra/bitpool.h (shared bit-array helpers) and a standalone
extra/bitpool_test.c (not wired into cmake) covering the bitmap and
the v4/v6 address&lt;-&gt;bit math, cross-checked against an __int128
reference.

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;

</content>
</entry>
<entry>
<title>metrics: document module in conf, manpage, and CHANGELOG</title>
<updated>2026-05-14T07:04:56+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-05-13T22:55:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=a0985c42f307e5137f9afa57edae219f7300211b'/>
<id>urn:sha1:a0985c42f307e5137f9afa57edae219f7300211b</id>
<content type='text'>
Add a commented `[metrics]` block to the example accel-ppp.conf and a
matching `#metrics` entry in the [modules] list so operators see the
feature when reading the sample config. Document the section in
accel-ppp.conf(5) next to [connlimit]: the format/address/allowed_ips
options, the path/method behaviour, and how the ACL accepts either
the bracketed or bare comma-separated form. Add an Unreleased entry
to CHANGELOG.md announcing the module.

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>radius: Add optional validation of Framed-Route</title>
<updated>2026-01-24T18:14:44+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-01-24T18:13:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=027bff94665e3e9779e34117947f0e0bec1eb8b6'/>
<id>urn:sha1:027bff94665e3e9779e34117947f0e0bec1eb8b6</id>
<content type='text'>
Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>dae-allowed: Remove nagging about making option mandatory</title>
<updated>2026-01-24T16:20:37+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-01-24T16:20:37+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=1addd77cf73bef943175648d534cce2e1a66497f'/>
<id>urn:sha1:1addd77cf73bef943175648d534cce2e1a66497f</id>
<content type='text'>
Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>radius: Implement DM/CoA security hardening by restricting source ip addresses</title>
<updated>2025-12-22T22:48:30+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2025-12-21T08:44:22+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=2550fe6cd9de9734cbc41179931fd029d8d132d6'/>
<id>urn:sha1:2550fe6cd9de9734cbc41179931fd029d8d132d6</id>
<content type='text'>
Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>Add RADIUS blast attack protection with Message-Authenticator</title>
<updated>2025-07-01T11:32:13+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2025-06-25T19:31:08+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=1ce263f13ac0b3aed3b14b4a9bb6a51afe210684'/>
<id>urn:sha1:1ce263f13ac0b3aed3b14b4a9bb6a51afe210684</id>
<content type='text'>
Recently FreeRadius started to complain accel-ppp doesn't pass
BlastRADIUS check. This commit fixes that.

This commit implements protection against RADIUS blast attacks
by adding support for the Message-Authenticator attribute in
Access-Request packets. This security enhancement helps
prevent unauthorized access attempts and replay attacks
on RADIUS authentication.

- Added new configuration option `blast-protection=1`
  in [radius] to enable Message-Authenticator inclusion
- Implemented HMAC-MD5 calculation for
  Message-Authenticator attribute (RFC 2869)
- Modified packet building to include 18-byte Message-Authenticator
  attribute when enabled
- Updated packet structure to support signing with shared secret

Enable blast protection by adding to the `[radius]` section:
```
blast-protection=1
```

When enabled, all Access-Request packets will include a
Message-Authenticator attribute with HMAC-MD5 signature,
providing cryptographic integrity verification and protection
against packet modification attacks.

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>ci: run tests in alpine vm</title>
<updated>2024-08-23T23:45:58+00:00</updated>
<author>
<name>Sergey V. Lobanov</name>
<email>sergey@lobanov.in</email>
</author>
<published>2024-08-22T15:47:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=3be221b510112a30922b1da2697eaaaca09ebfd5'/>
<id>urn:sha1:3be221b510112a30922b1da2697eaaaca09ebfd5</id>
<content type='text'>
Alpine Linux uses musl libc so now accel-ppp is tested under musl

Currently, Alpine Linux doesn't provide a link to the latest stable version
so direct link to Alpine 3.20 is used

Improved musl support might be used to run on platforms like openwrt
without additional patches
</content>
</entry>
<entry>
<title>workflows: Add CI build in Alpine</title>
<updated>2024-04-09T22:34:05+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2024-04-09T21:59:40+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=ce3ee7595c1239a20de589c95dd8ccce38ae49e7'/>
<id>urn:sha1:ce3ee7595c1239a20de589c95dd8ccce38ae49e7</id>
<content type='text'>
As we fixed musl compatibility, we can add also basic check
if accel keep working in Alpine Linux

Also update default config, enable connlimit and place it
before pptp, otherwise Alpine generate error:

```
[2024-04-09 22:30:09.911]loader: failed to load 'pptp': Error relocating /usr/local/lib64/accel-ppp/libpptp.so: connlimit_check: symbol not found
```

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>CLI: PPPoE: Add possibility to display inbound interface and service-name in show sessions command</title>
<updated>2023-06-29T17:48:39+00:00</updated>
<author>
<name>Dmitriy Eshenko</name>
<email>dmitriy.eshenko@accel-ppp.org</email>
</author>
<published>2023-06-29T17:48:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=a9e9f3ea0d7d4c48ba402d885372c978d5c75aab'/>
<id>urn:sha1:a9e9f3ea0d7d4c48ba402d885372c978d5c75aab</id>
<content type='text'>
</content>
</entry>
</feed>
