#protocols #heap #ppp #alloc #compatible #required #point-to-point

no-std ppproto

Point-to-Point Protocol (PPP) for embedded systems. no-std compatible, no alloc (heap) required.

5 unstable releases

0.2.0 Oct 6, 2024
0.1.2 Aug 29, 2023
0.1.1 Aug 25, 2023
0.1.0 Aug 24, 2023
0.0.0 Mar 7, 2023

#719 in Embedded development

Download history 8/week @ 2024-07-05 28/week @ 2024-07-12 22/week @ 2024-07-19 67/week @ 2024-07-26 28/week @ 2024-08-02 22/week @ 2024-08-09 27/week @ 2024-08-16 19/week @ 2024-08-23 34/week @ 2024-08-30 27/week @ 2024-09-06 44/week @ 2024-09-13 52/week @ 2024-09-20 47/week @ 2024-09-27 212/week @ 2024-10-04 109/week @ 2024-10-11 53/week @ 2024-10-18

425 downloads per month
Used in embassy-net-ppp

MIT/Apache

48KB
1.5K SLoC

ppproto

Rust implementation of the Point-to-Point Protocol (PPP) for embedded systems. no-std compatible, no alloc (heap) required.

Relevant RFCs

  • RFC 1661 - The Point-to-Point Protocol (PPP)
  • RFC 1332 - The PPP Internet Protocol Control Protocol (IPCP)
  • RFC 1334 - PPP Authentication Protocols

Testing against pppd

Put this in /etc/ppp/pap-secrets, where myhostname is the hostname of your machine.

myuser myhostname mypass 192.168.7.10
socat -v -x PTY,link=pty1,rawer PTY,link=pty2,rawer
pppd $PWD/pty1 115200 192.168.7.1: ms-dns 8.8.4.4 ms-dns 8.8.8.8 nodetach debug local persist silent noproxyarp
RUST_LOG=trace cargo run --bin simple -- --device pty2
ping 192.168.7.10

Testing against a real modem

  • minicom -D /dev/ttyUSB0 -b 115200
  • put whatever AT commands you need to connect (such as ATD*99#)
  • Control+A Q
  • RUST_LOG=trace cargo run --bin simple -- --device /dev/ttyUSB0

If you want to "MITM" the serial communications to see the raw bytes coming and going, you can do this:

socat -v -x /dev/ttyUSB0 PTY,link=pty,rawer

and then use $PWD/pty instead of /dev/ttyUSB0

License

This work is licensed under either of

at your option.

Dependencies

~0.7–1.3MB
~28K SLoC