upload changes done on plane

This commit is contained in:
soypat
2025-08-31 12:42:46 -03:00
parent d254f3ae80
commit d28203e75f
9 changed files with 70 additions and 16 deletions
+1 -1
View File
@@ -1,6 +1,6 @@
package lneto
//go:generate stringer -type=IPProto -linecomment -output stringers.go .
//go:generate stringer -type=IPProto,errGeneric -linecomment -output stringers.go .
// IPProto represents the IP protocol number.
type IPProto uint8
+14 -4
View File
@@ -8,6 +8,7 @@ func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[OptEnd-255]
_ = x[OptWordAligned-0]
_ = x[OptSubnetMask-1]
_ = x[OptTimeOffset-2]
@@ -72,15 +73,24 @@ func _() {
_ = x[OptClientIdentifier1-61]
}
const _OptNum_name = "word-alignedsubnet maskTime offset in seconds from UTCN/4 router addressesN/4 time server addressesN/4 IEN-116 server addressesN/4 DNS server addressesN/4 logging server addressesN/4 quote server addressesN/4 printer server addressesN/4 impress server addressesN/4 RLP server addressesHostname stringSize of boot file in 512 byte chunksClient to dump and name of file to dump toThe DNS domain name of the clientSwap server addressesPath name for root diskPatch name for more BOOTP infoEnable or disable IP forwardingEnable or disable source routingRouting policy filtersMaximum datagram reassembly sizeDefault IP time-to-livePath MTU aging timeoutPath MTU plateau tableInterface MTU sizeAll subnets are localBroadcast addressPerform mask discoveryProvide mask to othersPerform router discoveryRouter solicitation addressStatic routing tableTrailer encapsulationARP cache timeoutEthernet encapsulationDefault TCP time to liveTCP keepalive intervalTCP keepalive garbageNIS domain nameNIS server addressesNTP servers addressesVendor specific informationNetBIOS name serverNetBIOS datagram distributionNetBIOS node typeNetBIOS scopeX window font serverX window display managerRequested IP addressIP address lease timeOverload “sname” or “file”DHCP message type.DHCP server identificationParameter request listDHCP error messageDHCP maximum message sizeDHCP renewal (T1) timeDHCP rebinding (T2) timeClient identifierClient identifier(1)"
const (
_OptNum_name_0 = "word-alignedsubnet maskTime offset in seconds from UTCN/4 router addressesN/4 time server addressesN/4 IEN-116 server addressesN/4 DNS server addressesN/4 logging server addressesN/4 quote server addressesN/4 printer server addressesN/4 impress server addressesN/4 RLP server addressesHostname stringSize of boot file in 512 byte chunksClient to dump and name of file to dump toThe DNS domain name of the clientSwap server addressesPath name for root diskPatch name for more BOOTP infoEnable or disable IP forwardingEnable or disable source routingRouting policy filtersMaximum datagram reassembly sizeDefault IP time-to-livePath MTU aging timeoutPath MTU plateau tableInterface MTU sizeAll subnets are localBroadcast addressPerform mask discoveryProvide mask to othersPerform router discoveryRouter solicitation addressStatic routing tableTrailer encapsulationARP cache timeoutEthernet encapsulationDefault TCP time to liveTCP keepalive intervalTCP keepalive garbageNIS domain nameNIS server addressesNTP servers addressesVendor specific informationNetBIOS name serverNetBIOS datagram distributionNetBIOS node typeNetBIOS scopeX window font serverX window display managerRequested IP addressIP address lease timeOverload “sname” or “file”DHCP message type.DHCP server identificationParameter request listDHCP error messageDHCP maximum message sizeDHCP renewal (T1) timeDHCP rebinding (T2) timeClient identifierClient identifier(1)"
_OptNum_name_1 = "end options"
)
var _OptNum_index = [...]uint16{0, 12, 23, 54, 74, 99, 127, 151, 179, 205, 233, 261, 285, 300, 336, 378, 411, 432, 455, 485, 516, 548, 570, 602, 625, 647, 669, 687, 708, 725, 747, 769, 793, 820, 840, 861, 878, 900, 924, 946, 967, 982, 1002, 1023, 1050, 1069, 1098, 1115, 1128, 1148, 1172, 1192, 1213, 1247, 1265, 1291, 1313, 1331, 1356, 1378, 1402, 1419, 1439}
var (
_OptNum_index_0 = [...]uint16{0, 12, 23, 54, 74, 99, 127, 151, 179, 205, 233, 261, 285, 300, 336, 378, 411, 432, 455, 485, 516, 548, 570, 602, 625, 647, 669, 687, 708, 725, 747, 769, 793, 820, 840, 861, 878, 900, 924, 946, 967, 982, 1002, 1023, 1050, 1069, 1098, 1115, 1128, 1148, 1172, 1192, 1213, 1247, 1265, 1291, 1313, 1331, 1356, 1378, 1402, 1419, 1439}
)
func (i OptNum) String() string {
if i >= OptNum(len(_OptNum_index)-1) {
switch {
case i <= 61:
return _OptNum_name_0[_OptNum_index_0[i]:_OptNum_index_0[i+1]]
case i == 255:
return _OptNum_name_1
default:
return "OptNum(" + strconv.FormatInt(int64(i), 10) + ")"
}
return _OptNum_name[_OptNum_index[i]:_OptNum_index[i+1]]
}
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
+1
View File
@@ -185,6 +185,7 @@ const (
TypeSRV Type = 33 // SRV
TypeOPT Type = 41 // OPT
TypeHTTPS Type = 65 // HTTPS SSE
// Question.Type
TypeWKS Type = 11 // WKS
TypeHINFO Type = 13 // HINFO
+8 -4
View File
@@ -18,6 +18,7 @@ func _() {
_ = x[TypeAAAA-28]
_ = x[TypeSRV-33]
_ = x[TypeOPT-41]
_ = x[TypeHTTPS-65]
_ = x[TypeWKS-11]
_ = x[TypeHINFO-13]
_ = x[TypeMINFO-14]
@@ -32,8 +33,9 @@ const (
_Type_name_3 = "AAAA"
_Type_name_4 = "SRV"
_Type_name_5 = "OPT"
_Type_name_6 = "AXFR"
_Type_name_7 = "ALL"
_Type_name_6 = "HTTPS SSE"
_Type_name_7 = "AXFR"
_Type_name_8 = "ALL"
)
var (
@@ -59,10 +61,12 @@ func (i Type) String() string {
return _Type_name_4
case i == 41:
return _Type_name_5
case i == 252:
case i == 65:
return _Type_name_6
case i == 255:
case i == 252:
return _Type_name_7
case i == 255:
return _Type_name_8
default:
return "Type(" + strconv.FormatInt(int64(i), 10) + ")"
}
+13 -1
View File
@@ -4,7 +4,7 @@ package lneto
// Message string
// }
// var genericErrPacketDrop = &ErrorPacketDrop{Message: "lneto: packet dropped"}
// var genericErrPacketDrop = &ErrorPacketDrop{Message: ErrPacketDrop.Error()}
// // ErrGenericPacketDrop returns the generic packet drop error. It performs no allocations.
// func ErrGenericPacketDrop() error {
@@ -14,3 +14,15 @@ package lneto
// func (err *ErrorPacketDrop) Error() string {
// return err.Message
// }
type errGeneric uint8
// Generic errors common to internet functioning.
const (
_ errGeneric = iota // non-initialized err
ErrPacketDrop // packet dropped
)
func (err errGeneric) Error() string {
return err.String()
}
+10 -2
View File
@@ -1,9 +1,11 @@
package main
import (
"errors"
"flag"
"fmt"
"log"
"log/slog"
"net"
"net/netip"
"os"
@@ -11,6 +13,7 @@ import (
"strings"
"time"
"github.com/soypat/lneto"
"github.com/soypat/lneto/dns"
"github.com/soypat/lneto/http/httpraw"
"github.com/soypat/lneto/internal"
@@ -105,13 +108,14 @@ func run() (err error) {
lastAction := time.Now()
buf := make([]byte, mtu)
var cap pcap.PacketBreakdown
var frames []pcap.Frame
for {
clear(buf)
nwrite, err := stack.Encapsulate(buf[:], 0)
if err != nil {
fmt.Println("ERR:ENCAPSULATE", err)
} else if nwrite > 0 {
frames, err := cap.CaptureEthernet(nil, buf[:nwrite], 0)
frames, err = cap.CaptureEthernet(frames[:0], buf[:nwrite], 0)
if len(frames) > 0 {
fmt.Println("OUT", frames)
}
@@ -130,7 +134,10 @@ func run() (err error) {
} else if nread > 0 {
err = stack.Demux(buf[:nread], 0)
if err != nil {
log.Println("groutine demux:", err)
if !errors.Is(err, lneto.ErrPacketDrop) {
frames, err = cap.CaptureEthernet(frames[:0], buf[:nread], 0)
log.Println("groutine demux:", err, frames)
}
}
}
@@ -157,6 +164,7 @@ func run() (err error) {
if err != nil {
return fmt.Errorf("assimilating DHCP results: %w", err)
}
slog.Info("dhcp-complete", slog.String("assignedIP", results.AssignedAddr.String()), slog.String("routerIP", results.Router.String()), slog.Any("DNS", results.DNSServers), slog.Any("subnet", results.Subnet.String()))
const (
arpTimeout = 2 * time.Second
arpRetries = 2
+3 -2
View File
@@ -21,11 +21,12 @@ func _() {
_ = x[FieldClassOptions-10]
_ = x[FieldClassPayload-11]
_ = x[FieldClassText-12]
_ = x[FieldClassAddress-13]
}
const _FieldClass_name = "undefinedsourcedestinationprotocolversiontypefield sizeflagsidentificationchecksumoptionspayloadtext"
const _FieldClass_name = "undefinedsourcedestinationprotocolversiontypefield sizeflagsidentificationchecksumoptionspayloadtextaddress"
var _FieldClass_index = [...]uint8{0, 9, 15, 26, 34, 41, 45, 55, 60, 74, 82, 89, 96, 100}
var _FieldClass_index = [...]uint8{0, 9, 15, 26, 34, 41, 45, 55, 60, 74, 82, 89, 96, 100, 107}
func (i FieldClass) String() string {
if i >= FieldClass(len(_FieldClass_index)-1) {
+1 -1
View File
@@ -103,7 +103,7 @@ func (ls *StackEthernet) Demux(carrierData []byte, frameOffset int) (err error)
}
DROP:
ls.info("LinkStack:drop-packet", slog.String("dsthw", net.HardwareAddr(dstaddr[:]).String()), slog.String("ethertype", efrm.EtherTypeOrSize().String()))
return errors.New("drop packet")
return lneto.ErrPacketDrop
}
func (ls *StackEthernet) Encapsulate(carrierData []byte, frameOffset int) (n int, err error) {
+19 -1
View File
@@ -1,4 +1,4 @@
// Code generated by "stringer -type=IPProto -linecomment -output stringers.go ."; DO NOT EDIT.
// Code generated by "stringer -type=IPProto,errGeneric -linecomment -output stringers.go ."; DO NOT EDIT.
package lneto
@@ -190,3 +190,21 @@ func (i IPProto) String() string {
return "IPProto(" + strconv.FormatInt(int64(i), 10) + ")"
}
}
func _() {
// An "invalid array index" compiler error signifies that the constant values have changed.
// Re-run the stringer command to generate them again.
var x [1]struct{}
_ = x[ErrPacketDrop-1]
}
const _errGeneric_name = "packet dropped"
var _errGeneric_index = [...]uint8{0, 14}
func (i errGeneric) String() string {
i -= 1
if i >= errGeneric(len(_errGeneric_index)-1) {
return "errGeneric(" + strconv.FormatInt(int64(i+1), 10) + ")"
}
return _errGeneric_name[_errGeneric_index[i]:_errGeneric_index[i+1]]
}