mirror of
https://github.com/netbirdio/gvisor.git
synced 2026-05-22 17:12:49 -07:00
netstack: move Linux ABI struct into abi/linux
PiperOrigin-RevId: 581049684
This commit is contained in:
committed by
gVisor bot
parent
3ec902d1a6
commit
b80e856de3
@@ -389,18 +389,29 @@ type XTRedirectTarget struct {
|
||||
// SizeOfXTRedirectTarget is the size of an XTRedirectTarget.
|
||||
const SizeOfXTRedirectTarget = 56
|
||||
|
||||
// XTSNATTarget triggers Source NAT when reached.
|
||||
// XTNATTargetV0 triggers NAT when reached.
|
||||
// Adding 4 bytes of padding to make the struct 8 byte aligned.
|
||||
//
|
||||
// +marshal
|
||||
type XTSNATTarget struct {
|
||||
type XTNATTargetV0 struct {
|
||||
Target XTEntryTarget
|
||||
NfRange NfNATIPV4MultiRangeCompat
|
||||
_ [4]byte
|
||||
}
|
||||
|
||||
// SizeOfXTSNATTarget is the size of an XTSNATTarget.
|
||||
const SizeOfXTSNATTarget = 56
|
||||
// SizeOfXTNATTargetV0 is the size of an XTNATTargetV0.
|
||||
const SizeOfXTNATTargetV0 = 56
|
||||
|
||||
// XTNATTargetV1 triggers NAT when reached.
|
||||
//
|
||||
// +marshal
|
||||
type XTNATTargetV1 struct {
|
||||
Target XTEntryTarget
|
||||
Range NFNATRange
|
||||
}
|
||||
|
||||
// SizeOfXTNATTargetV1 is the size of an XTNATTargetV1.
|
||||
const SizeOfXTNATTargetV1 = SizeOfXTEntryTarget + SizeOfNFNATRange
|
||||
|
||||
// IPTGetinfo is the argument for the IPT_SO_GET_INFO sockopt. It corresponds
|
||||
// to struct ipt_getinfo in include/uapi/linux/netfilter_ipv4/ip_tables.h.
|
||||
|
||||
@@ -352,14 +352,6 @@ func (*redirectTargetMaker) unmarshal(buf []byte, filter stack.IPHeaderFilter) (
|
||||
return &target, nil
|
||||
}
|
||||
|
||||
// +marshal
|
||||
type nfNATTarget struct {
|
||||
Target linux.XTEntryTarget
|
||||
Range linux.NFNATRange
|
||||
}
|
||||
|
||||
const nfNATMarshalledSize = linux.SizeOfXTEntryTarget + linux.SizeOfNFNATRange
|
||||
|
||||
type nfNATTargetMaker struct {
|
||||
NetworkProtocol tcpip.NetworkProtocolNumber
|
||||
}
|
||||
@@ -373,9 +365,9 @@ func (rm *nfNATTargetMaker) id() targetID {
|
||||
|
||||
func (*nfNATTargetMaker) marshal(target target) []byte {
|
||||
rt := target.(*redirectTarget)
|
||||
nt := nfNATTarget{
|
||||
nt := linux.XTNATTargetV1{
|
||||
Target: linux.XTEntryTarget{
|
||||
TargetSize: nfNATMarshalledSize,
|
||||
TargetSize: linux.SizeOfXTNATTargetV1,
|
||||
},
|
||||
Range: linux.NFNATRange{
|
||||
Flags: linux.NF_NAT_RANGE_PROTO_SPECIFIED,
|
||||
@@ -392,7 +384,7 @@ func (*nfNATTargetMaker) marshal(target target) []byte {
|
||||
}
|
||||
|
||||
func (*nfNATTargetMaker) unmarshal(buf []byte, filter stack.IPHeaderFilter) (target, *syserr.Error) {
|
||||
if size := nfNATMarshalledSize; len(buf) < size {
|
||||
if size := linux.SizeOfXTNATTargetV1; len(buf) < size {
|
||||
nflog("nfNATTargetMaker: buf has insufficient size (%d) for nfNAT target (%d)", len(buf), size)
|
||||
return nil, syserr.ErrInvalidArgument
|
||||
}
|
||||
@@ -446,9 +438,9 @@ func (st *snatTargetMakerV4) id() targetID {
|
||||
func (*snatTargetMakerV4) marshal(target target) []byte {
|
||||
st := target.(*snatTarget)
|
||||
// This is a snat target named snat.
|
||||
xt := linux.XTSNATTarget{
|
||||
xt := linux.XTNATTargetV0{
|
||||
Target: linux.XTEntryTarget{
|
||||
TargetSize: linux.SizeOfXTSNATTarget,
|
||||
TargetSize: linux.SizeOfXTNATTargetV0,
|
||||
},
|
||||
}
|
||||
copy(xt.Target.Name[:], SNATTargetName)
|
||||
@@ -463,7 +455,7 @@ func (*snatTargetMakerV4) marshal(target target) []byte {
|
||||
}
|
||||
|
||||
func (*snatTargetMakerV4) unmarshal(buf []byte, filter stack.IPHeaderFilter) (target, *syserr.Error) {
|
||||
if len(buf) < linux.SizeOfXTSNATTarget {
|
||||
if len(buf) < linux.SizeOfXTNATTargetV0 {
|
||||
nflog("snatTargetMakerV4: buf has insufficient size for snat target %d", len(buf))
|
||||
return nil, syserr.ErrInvalidArgument
|
||||
}
|
||||
@@ -473,10 +465,10 @@ func (*snatTargetMakerV4) unmarshal(buf []byte, filter stack.IPHeaderFilter) (ta
|
||||
return nil, syserr.ErrInvalidArgument
|
||||
}
|
||||
|
||||
var st linux.XTSNATTarget
|
||||
var st linux.XTNATTargetV0
|
||||
st.UnmarshalUnsafe(buf)
|
||||
|
||||
// Copy linux.XTSNATTarget to stack.SNATTarget.
|
||||
// Copy linux.XTNATTargetV0 to stack.SNATTarget.
|
||||
target := snatTarget{SNATTarget: stack.SNATTarget{
|
||||
NetworkProtocol: filter.NetworkProtocol(),
|
||||
}}
|
||||
@@ -524,9 +516,9 @@ func (st *snatTargetMakerV6) id() targetID {
|
||||
|
||||
func (*snatTargetMakerV6) marshal(target target) []byte {
|
||||
st := target.(*snatTarget)
|
||||
nt := nfNATTarget{
|
||||
nt := linux.XTNATTargetV1{
|
||||
Target: linux.XTEntryTarget{
|
||||
TargetSize: nfNATMarshalledSize,
|
||||
TargetSize: linux.SizeOfXTNATTargetV1,
|
||||
},
|
||||
Range: linux.NFNATRange{
|
||||
Flags: linux.NF_NAT_RANGE_MAP_IPS | linux.NF_NAT_RANGE_PROTO_SPECIFIED,
|
||||
@@ -542,7 +534,7 @@ func (*snatTargetMakerV6) marshal(target target) []byte {
|
||||
}
|
||||
|
||||
func (*snatTargetMakerV6) unmarshal(buf []byte, filter stack.IPHeaderFilter) (target, *syserr.Error) {
|
||||
if size := nfNATMarshalledSize; len(buf) < size {
|
||||
if size := linux.SizeOfXTNATTargetV1; len(buf) < size {
|
||||
nflog("snatTargetMakerV6: buf has insufficient size (%d) for SNAT V6 target (%d)", len(buf), size)
|
||||
return nil, syserr.ErrInvalidArgument
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user