ppp

package
v1.1.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Nov 20, 2024 License: GPL-3.0 Imports: 9 Imported by: 0

Documentation

Index

Constants

View Source
const (
	// IPv4 header size: 20 bytes (min)
	// IPv6 header size: 40 bytes
	MinimumFrameSize = 20

	// MaxPPPMsgSize specifies max length of a received PPP packet
	MaxPPPMsgSize = 1500
)

Variables

This section is empty.

Functions

This section is empty.

Types

type ConnAdapter

type ConnAdapter struct {
	// contains filtered or unexported fields
}

ConnAdapter wraps a PPP connection into the etherconn.SharedEthernetConn interface.

func NewConnAdapter

func NewConnAdapter(ppp *PPP, proto ProtocolNumber) *ConnAdapter

func (*ConnAdapter) Close

func (c *ConnAdapter) Close() error

func (*ConnAdapter) Register

func (c *ConnAdapter) Register(k etherconn.L4HashKey) (torecvch chan *etherconn.EthernetResponse)

func (*ConnAdapter) SetWriteDeadline

func (c *ConnAdapter) SetWriteDeadline(t time.Time) error

SetWriteDeadline sets deadline for WriteIPPktTo

func (*ConnAdapter) Start

func (c *ConnAdapter) Start(ctx context.Context)

func (*ConnAdapter) Unregister added in v1.1.0

func (c *ConnAdapter) Unregister(k etherconn.L4HashKey)

func (*ConnAdapter) WriteIPPktTo

func (c *ConnAdapter) WriteIPPktTo(p []byte, _ net.HardwareAddr) (int, error)

WriteIPPktTo implements etherconn.SharedEthernetConn interface. dstmac is not used at all.

type Deserializer

type Deserializer interface {
	Parse([]byte) error
}

type PPP

type PPP struct {
	Logger *zerolog.Logger
	// contains filtered or unexported fields
}

PPP represents the PPP protocol (built over PPPoE for usage over ethernet)

func NewPPP

func NewPPP(conn net.PacketConn, l *zerolog.Logger, generateReject func(b []byte) *Packet) *PPP

NewPPP creates a new PPP protocol instance, using conn as underlying transport, l as Logger;

func (*PPP) Close

func (ppp *PPP) Close() error

func (*PPP) Register

func (ppp *PPP) Register(p ProtocolNumber) (chan []byte, chan []byte)

Register a new protocol over PPP. 1. send is used to send packets 2. receive is used to receive packets

func (*PPP) Start

func (ppp *PPP) Start(ctx context.Context)

func (*PPP) Unregister

func (ppp *PPP) Unregister(p ProtocolNumber)

Unregister removes a previously registered protocol if present.

type Packet

type Packet struct {
	Proto   ProtocolNumber
	Payload Serializer
}

Packet represents PPP packet

func NewPacket

func NewPacket(data Serializer, proto ProtocolNumber) *Packet

NewPacket return a new PPP packet with protocol number and payload

func (*Packet) Parse

func (pppPkt *Packet) Parse(buf []byte) error

Parse buf into PPPPacket

func (*Packet) Serialize

func (pppPkt *Packet) Serialize() ([]byte, error)

Serialize into bytes, without copying, and no padding

type ProtocolNumber

type ProtocolNumber uint16

ProtocolNumber is the PPP protocol number

const (
	ProtoNone                                        ProtocolNumber = 0x00
	ProtoPAD                                         ProtocolNumber = 0x01
	ProtoIPv4                                        ProtocolNumber = 0x21
	ProtoIPv6                                        ProtocolNumber = 0x57
	ProtoLCP                                         ProtocolNumber = 0xc021
	ProtoPAP                                         ProtocolNumber = 0xc023
	ProtoCHAP                                        ProtocolNumber = 0xc223
	ProtoEAP                                         ProtocolNumber = 0xc227
	ProtoIPCP                                        ProtocolNumber = 0x8021
	ProtoIPv6CP                                      ProtocolNumber = 0x8057
	ProtoROHCsmallCID                                ProtocolNumber = 0x03
	ProtoROHClargeCID                                ProtocolNumber = 0x05
	ProtoOSINetworkLayer                             ProtocolNumber = 0x23
	ProtoXeroxNSIDP                                  ProtocolNumber = 0x25
	ProtoDECnetPhaseIV                               ProtocolNumber = 0x27
	ProtoAppletalk                                   ProtocolNumber = 0x29
	ProtoNovellIPX                                   ProtocolNumber = 0x002b
	ProtoVanJacobsonCompressedTCPIP                  ProtocolNumber = 0x002d
	ProtoVanJacobsonUncompressedTCPIP                ProtocolNumber = 0x002f
	ProtoBridgingPDU                                 ProtocolNumber = 0x31
	ProtoStreamProtocol                              ProtocolNumber = 0x33
	ProtoBanyanVines                                 ProtocolNumber = 0x35
	ProtoUnassigned                                  ProtocolNumber = 0x37
	ProtoAppleTalkEDDP                               ProtocolNumber = 0x39
	ProtoAppleTalkSmartBuffered                      ProtocolNumber = 0x003b
	ProtoMultiLink                                   ProtocolNumber = 0x003d
	ProtoNETBIOSFraming                              ProtocolNumber = 0x003f
	ProtoCiscoSystems                                ProtocolNumber = 0x41
	ProtoAscomTimeplex                               ProtocolNumber = 0x43
	ProtoFujitsuLinkBackupandLoadBalancing           ProtocolNumber = 0x45
	ProtoDCARemoteLan                                ProtocolNumber = 0x47
	ProtoSerialDataTransportProtocol                 ProtocolNumber = 0x49
	ProtoSNAover802                                  ProtocolNumber = 0x004b
	ProtoSNA                                         ProtocolNumber = 0x004d
	ProtoIPv6HeaderCompression                       ProtocolNumber = 0x004f
	ProtoKNXBridgingData                             ProtocolNumber = 0x51
	ProtoEncryption                                  ProtocolNumber = 0x53
	ProtoIndividualLinkEncryption                    ProtocolNumber = 0x55
	ProtoPPPMuxing                                   ProtocolNumber = 0x59
	ProtoVendorSpecificNetworkProtocol               ProtocolNumber = 0x005b
	ProtoTRILLNetworkProtocol                        ProtocolNumber = 0x005d
	ProtoRTPIPHCFullHeader                           ProtocolNumber = 0x61
	ProtoRTPIPHCCompressedTCP                        ProtocolNumber = 0x63
	ProtoRTPIPHCCompressedNonTCP                     ProtocolNumber = 0x65
	ProtoRTPIPHCCompressedUDP8                       ProtocolNumber = 0x67
	ProtoRTPIPHCCompressedRTP8                       ProtocolNumber = 0x69
	ProtoStampedeBridging                            ProtocolNumber = 0x006f
	ProtoMPPlus                                      ProtocolNumber = 0x73
	ProtoNTCITSIPI                                   ProtocolNumber = 0x00c1
	ProtoSinglelinkcompressioninmultilink            ProtocolNumber = 0x00fb
	ProtoCompresseddatagram                          ProtocolNumber = 0x00fd
	ProtoHelloPackets8021d                           ProtocolNumber = 0x201
	ProtoIBMSourceRoutingBPDU                        ProtocolNumber = 0x203
	ProtoDECLANBridge100SpanningTree                 ProtocolNumber = 0x205
	ProtoCiscoDiscoveryProtocol                      ProtocolNumber = 0x207
	ProtoNetcsTwinRouting                            ProtocolNumber = 0x209
	ProtoSTPScheduledTransferProtocol                ProtocolNumber = 0x020b
	ProtoEDPExtremeDiscoveryProtocol                 ProtocolNumber = 0x020d
	ProtoOpticalSupervisoryChannelProtocol           ProtocolNumber = 0x211
	ProtoOpticalSupervisoryChannelProtocolAlias      ProtocolNumber = 0x213
	ProtoLuxcom                                      ProtocolNumber = 0x231
	ProtoSigmaNetworkSystems                         ProtocolNumber = 0x233
	ProtoAppleClientServerProtocol                   ProtocolNumber = 0x235
	ProtoMPLSUnicast                                 ProtocolNumber = 0x281
	ProtoMPLSMulticast                               ProtocolNumber = 0x283
	ProtoIEEEp12844standarddatapackets               ProtocolNumber = 0x285
	ProtoETSITETRANetworkProtocolType1               ProtocolNumber = 0x287
	ProtoMultichannelFlowTreatmentProtocol           ProtocolNumber = 0x289
	ProtoRTPIPHCCompressedTCPNoDelta                 ProtocolNumber = 0x2063
	ProtoRTPIPHCContextState                         ProtocolNumber = 0x2065
	ProtoRTPIPHCCompressedUDP16                      ProtocolNumber = 0x2067
	ProtoRTPIPHCCompressedRTP16                      ProtocolNumber = 0x2069
	ProtoCrayCommunicationsControlProtocol           ProtocolNumber = 0x4001
	ProtoCDPDMobileNetworkRegistrationProtocol       ProtocolNumber = 0x4003
	ProtoExpandacceleratorprotocol                   ProtocolNumber = 0x4005
	ProtoODSICPNCP                                   ProtocolNumber = 0x4007
	ProtoDOCSISDLL                                   ProtocolNumber = 0x4009
	ProtoCetaceanNetworkDetectionProtocol            ProtocolNumber = 0x400B
	ProtoStackerLZS                                  ProtocolNumber = 0x4021
	ProtoRefTekProtocol                              ProtocolNumber = 0x4023
	ProtoFibreChannel                                ProtocolNumber = 0x4025
	ProtoOpenDOF                                     ProtocolNumber = 0x4027
	ProtoVendorSpecificProtocol                      ProtocolNumber = 0x405b
	ProtoTRILLLinkStateProtocol                      ProtocolNumber = 0x405d
	ProtoOSINetworkLayerControlProtocol              ProtocolNumber = 0x8023
	ProtoXeroxNSIDPControlProtocol                   ProtocolNumber = 0x8025
	ProtoDECnetPhaseIVControlProtocol                ProtocolNumber = 0x8027
	ProtoAppletalkControlProtocol                    ProtocolNumber = 0x8029
	ProtoNovellIPXControlProtocol                    ProtocolNumber = 0x802b
	ProtoBridgingNCP                                 ProtocolNumber = 0x8031
	ProtoStreamProtocolControlProtocol               ProtocolNumber = 0x8033
	ProtoBanyanVinesControlProtocol                  ProtocolNumber = 0x8035
	ProtoMultiLinkControlProtocol                    ProtocolNumber = 0x803d
	ProtoNETBIOSFramingControlProtocol               ProtocolNumber = 0x803f
	ProtoCiscoSystemsControlProtocol                 ProtocolNumber = 0x8041
	ProtoAscomTimeplexAlias                          ProtocolNumber = 0x8043
	ProtoFujitsuLBLBControlProtocol                  ProtocolNumber = 0x8045
	ProtoDCARemoteLanNetworkControlProtocol          ProtocolNumber = 0x8047
	ProtoSerialDataControlProtocol                   ProtocolNumber = 0x8049
	ProtoSNAover802Control                           ProtocolNumber = 0x804b
	ProtoSNAControlProtocol                          ProtocolNumber = 0x804d
	ProtoIP6HeaderCompressionControlProtocol         ProtocolNumber = 0x804f
	ProtoKNXBridgingControlProtocol                  ProtocolNumber = 0x8051
	ProtoEncryptionControlProtocol                   ProtocolNumber = 0x8053
	ProtoIndividualLinkEncryptionControlProtocol     ProtocolNumber = 0x8055
	ProtoPPPMuxingControlProtocol                    ProtocolNumber = 0x8059
	ProtoVendorSpecificNetworkControlProtocol        ProtocolNumber = 0x805b
	ProtoTRILLNetworkControlProtocol                 ProtocolNumber = 0x805d
	ProtoStampedeBridgingControlProtocol             ProtocolNumber = 0x806f
	ProtoMPPlusControlProtocol                       ProtocolNumber = 0x8073
	ProtoNTCITSIPIControlProtocol                    ProtocolNumber = 0x80c1
	Protosinglelinkcompressioninmultilinkcontrol     ProtocolNumber = 0x80fb
	ProtoCompressionControlProtocol                  ProtocolNumber = 0x80fd
	ProtoCiscoDiscoveryProtocolControl               ProtocolNumber = 0x8207
	ProtoNetcsTwinRoutingAlias                       ProtocolNumber = 0x8209
	ProtoSTPControlProtocol                          ProtocolNumber = 0x820b
	ProtoEDPCPExtremeDiscoveryProtocolCtrlPrtcl      ProtocolNumber = 0x820d
	ProtoAppleClientServerProtocolControl            ProtocolNumber = 0x8235
	ProtoMPLSCP                                      ProtocolNumber = 0x8281
	ProtoIEEEp12844standardProtocolControl           ProtocolNumber = 0x8285
	ProtoETSITETRATNP1ControlProtocol                ProtocolNumber = 0x8287
	ProtoMultichannelFlowTreatmentProtocolAlias      ProtocolNumber = 0x8289
	ProtoLinkQualityReport                           ProtocolNumber = 0xc025
	ProtoShivaPasswordAuthenticationProtocol         ProtocolNumber = 0xc027
	ProtoCallBackControlProtocol                     ProtocolNumber = 0xc029
	ProtoBACPBandwidthAllocationControlProtocolAlias ProtocolNumber = 0xc02b
	ProtoBAP                                         ProtocolNumber = 0xc02d
	ProtoVendorSpecificAuthenticationProtocol        ProtocolNumber = 0xc05b
	ProtoContainerControlProtocol                    ProtocolNumber = 0xc081
	ProtoRSAAuthenticationProtocol                   ProtocolNumber = 0xc225
	ProtoMitsubishiSecurityInfoExchPtcl              ProtocolNumber = 0xc229
	ProtoStampedeBridgingAuthorizationProtocol       ProtocolNumber = 0xc26f
	ProtoProprietaryAuthenticationProtocol           ProtocolNumber = 0xc281
	ProtoProprietaryAuthenticationProtocolAlias      ProtocolNumber = 0xc283
	ProtoProprietaryNodeIDAuthenticationProtocol     ProtocolNumber = 0xc481
)

List of PPP protocol number

func (ProtocolNumber) String

func (val ProtocolNumber) String() string

type Serializer

type Serializer interface {
	Serialize() ([]byte, error)
}

func NewStaticSerializer

func NewStaticSerializer(data []byte) Serializer

type SerializerDeserializer

type SerializerDeserializer interface {
	Serializer
	Deserializer
}

Directories

Path Synopsis
Package lcp implements LCP, IPCP and IPv6CP protocols
Package lcp implements LCP, IPCP and IPv6CP protocols

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL