Crate ppproto

Source
Expand description

§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.

Modules§

pppos
PPP over Serial

Structs§

Config
PPP configuration.
InvalidStateError
Invalid state error.
Ipv4Status
Status of the IPv4 connection.
Status
Status of the PPP connection.

Enums§

Phase
Phase of the PPP connection.