<feed xmlns='http://www.w3.org/2005/Atom'>
<title>accel-ppp.git/accel-pppd/ctrl/ipoe, 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-06T22:15:06+00:00</updated>
<entry>
<title>ipoe: fix username string leak on early session teardown</title>
<updated>2026-07-06T22:15:06+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-07-06T22:13:29+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=e12b38501be622c9c8e030de86a28721d797e542'/>
<id>urn:sha1:e12b38501be622c9c8e030de86a28721d797e542</id>
<content type='text'>
The ipoe-level ses-&gt;username always holds an allocated string
(_strdup of ifname/calling-station-id, u_inet_ntoa buffer or lua
result), but ipoe_session_free() never released it. Ownership is
normally transferred in auth_result() via ap_session_set_username(),
so the string was leaked whenever a session died before auth_result()
ran: termination while starting, PWDB_WAIT never completing, or
ipoe_create_interface() failure.

The create-interface failure path also leaked the freshly allocated
local copy outright, since it returned before the string was stored
anywhere.

Store the string in ses-&gt;username as soon as it is obtained and free
it in ipoe_session_free(). auth_result() clears ses-&gt;username before
handing ownership to ap_session_set_username(), so no double free is
possible.

Reported-by: Louis Scalbert (#101)
</content>
</entry>
<entry>
<title>ipoe: fix dhcpv4 relay reply packet leak</title>
<updated>2026-07-06T22:15:06+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-07-06T22:12:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=7a7ab323158a63f222698f85179090e3b6030b96'/>
<id>urn:sha1:7a7ab323158a63f222698f85179090e3b6030b96</id>
<content type='text'>
dhcpv4_relay_read() takes a reference on the reply packet for every
registered listener context and hands it over via triton_context_call().
The receiving ipoe_ses_recv_dhcpv4_relay() consumes that reference by
storing the packet in ses-&gt;dhcpv4_relay_reply, but the early-return
branch taken when the original request is already gone dropped the
reference without freeing the packet.

This leaks one packet every time a relay reply races with the request
being released, which happens regularly on busy relay-mode deployments.

Reported-by: Louis Scalbert (#101)
</content>
</entry>
<entry>
<title>strip: Fix invalid parsing</title>
<updated>2026-05-21T12:50:42+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-05-21T12:50:42+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=1b67ba0785a847eee6adb69b7e68995c33803805'/>
<id>urn:sha1:1b67ba0785a847eee6adb69b7e68995c33803805</id>
<content type='text'>
strip() memmove count was one short, dropping the NULL  terminator;
dpado_parse error path leaked already-parsed range entries.
Also affects ipoe.

Since strip is identical in both, we can place fixed common function in utils.

Reported-by: Khedor &lt;khedor@gmail.com&gt;
Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>session: encapsulate statistics counters</title>
<updated>2026-05-04T00:09:49+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-04-29T12:21:02+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=d6383d69813cf2244f31d8116176733ffbbeaceb'/>
<id>urn:sha1:d6383d69813cf2244f31d8116176733ffbbeaceb</id>
<content type='text'>
Group the core session starting, active, and finishing statistics behind the private ap_session_stat storage in session.c instead of exposing writable counters through ap_session.h. This keeps ownership inside the session core while preserving the existing CLI and ACCEL-PPP-MIB counter semantics.

Route session counter updates through ap_session_stat_*() helpers. Session start, activation, termination, finish, and shutdown-idle paths no longer open-code individual counter increments/decrements; the update policy now lives beside the session-owned storage and uses relaxed atomic operations for the simple state counters.

Make the CLI show-stat path render from a local snapshot and convert the PPP SNMP starting/active/finishing scalars from watched raw pointers to scalar handlers. PPP controllers now read max-session limits through ap_session_stat_starting() and ap_session_stat_active(), removing external direct access to ap_session_stat.

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>ipoe: encapsulate statistics counters</title>
<updated>2026-05-04T00:09:49+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-04-29T11:28:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=770550921ae2d084168cb0b9d8d66f783cbdb69d'/>
<id>urn:sha1:770550921ae2d084168cb0b9d8d66f783cbdb69d</id>
<content type='text'>
Group the IPOE starting, active, and delayed offer statistics in struct ipoe_stat_t and keep the storage private to ipoe.c instead of exposing writable stat_* globals. This keeps ownership inside the IPOE control code while preserving the existing CLI and ACCEL-PPP-MIB counter semantics.

Route counter updates through ipoe_stat_*() helpers. Session setup, activation, teardown, and delayed offer queue paths no longer open-code individual counter increments/decrements; the update policy now lives beside the IPOE-owned storage and uses relaxed atomic operations for the simple state counters.

Make the CLI show-stat path render from a local snapshot and convert the IPOE SNMP starting/active scalars from watched raw pointers to scalar handlers. SNMP now reads through ipoe_stat_starting() and ipoe_stat_active(), removing the old ipoe_get_stat() pointer escape hatch.

Signed-off-by: Denys Fedoryshchenko &lt;denys.f@collabora.com&gt;
</content>
</entry>
<entry>
<title>Replace linux/if.h with net/if.h include</title>
<updated>2026-02-22T21:01:03+00:00</updated>
<author>
<name>marekm72</name>
<email>35698605+marekm72@users.noreply.github.com</email>
</author>
<published>2026-02-22T21:01:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=1314586acfc2a99c0c72cda1f517b441599719a5'/>
<id>urn:sha1:1314586acfc2a99c0c72cda1f517b441599719a5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Replace linux/if.h with net/if.h in ipoe.h</title>
<updated>2026-02-22T20:49:58+00:00</updated>
<author>
<name>marekm72</name>
<email>35698605+marekm72@users.noreply.github.com</email>
</author>
<published>2026-02-22T20:49:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=e979068b4eb5e7985dca3360aa35a54fdb61e4d0'/>
<id>urn:sha1:e979068b4eb5e7985dca3360aa35a54fdb61e4d0</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Update header includes in ipoe.c</title>
<updated>2026-02-22T20:45:20+00:00</updated>
<author>
<name>marekm72</name>
<email>35698605+marekm72@users.noreply.github.com</email>
</author>
<published>2026-02-22T20:45:20+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=29329d1fd11bb7d4bbde8b926b3f633387c7bcad'/>
<id>urn:sha1:29329d1fd11bb7d4bbde8b926b3f633387c7bcad</id>
<content type='text'>
Replaced Linux-specific headers with their net counterparts.</content>
</entry>
<entry>
<title>Refactor ARP header includes in arp.c</title>
<updated>2026-02-22T20:42:10+00:00</updated>
<author>
<name>marekm72</name>
<email>35698605+marekm72@users.noreply.github.com</email>
</author>
<published>2026-02-22T20:42:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=3f46d73994f007dbf3e85fd1a2ae22aba8ce459e'/>
<id>urn:sha1:3f46d73994f007dbf3e85fd1a2ae22aba8ce459e</id>
<content type='text'>
Replaced conditional inclusion of if_arp.h and if_packet.h with direct includes.</content>
</entry>
<entry>
<title>netlink: Added VRF support</title>
<updated>2026-01-30T03:25:54+00:00</updated>
<author>
<name>Andrii Melnychenko</name>
<email>a.melnychenko@vyos.io</email>
</author>
<published>2026-01-07T12:14:11+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=d4f230af1cc31447289a7e30640a471a818cfd69'/>
<id>urn:sha1:d4f230af1cc31447289a7e30640a471a818cfd69</id>
<content type='text'>
Added VRF support to the iproute routines.
Updated iproute* calls in the ipoe, radius, and dhcpv6 code.

Signed-off-by: Andrii Melnychenko &lt;a.melnychenko@vyos.io&gt;
</content>
</entry>
</feed>
