// automatically generated by stateify.

package tcpip

import (
	"gvisor.dev/gvisor/pkg/state"
)

func (f *FullAddress) StateTypeName() string {
	return "pkg/tcpip.FullAddress"
}

func (f *FullAddress) StateFields() []string {
	return []string{
		"NIC",
		"Addr",
		"Port",
	}
}

func (f *FullAddress) beforeSave() {}

func (f *FullAddress) StateSave(stateSinkObject state.Sink) {
	f.beforeSave()
	stateSinkObject.Save(0, &f.NIC)
	stateSinkObject.Save(1, &f.Addr)
	stateSinkObject.Save(2, &f.Port)
}

func (f *FullAddress) afterLoad() {}

func (f *FullAddress) StateLoad(stateSourceObject state.Source) {
	stateSourceObject.Load(0, &f.NIC)
	stateSourceObject.Load(1, &f.Addr)
	stateSourceObject.Load(2, &f.Port)
}

func (c *ControlMessages) StateTypeName() string {
	return "pkg/tcpip.ControlMessages"
}

func (c *ControlMessages) StateFields() []string {
	return []string{
		"HasTimestamp",
		"Timestamp",
		"HasInq",
		"Inq",
		"HasTOS",
		"TOS",
		"HasTClass",
		"TClass",
		"HasIPPacketInfo",
		"PacketInfo",
	}
}

func (c *ControlMessages) beforeSave() {}

func (c *ControlMessages) StateSave(stateSinkObject state.Sink) {
	c.beforeSave()
	stateSinkObject.Save(0, &c.HasTimestamp)
	stateSinkObject.Save(1, &c.Timestamp)
	stateSinkObject.Save(2, &c.HasInq)
	stateSinkObject.Save(3, &c.Inq)
	stateSinkObject.Save(4, &c.HasTOS)
	stateSinkObject.Save(5, &c.TOS)
	stateSinkObject.Save(6, &c.HasTClass)
	stateSinkObject.Save(7, &c.TClass)
	stateSinkObject.Save(8, &c.HasIPPacketInfo)
	stateSinkObject.Save(9, &c.PacketInfo)
}

func (c *ControlMessages) afterLoad() {}

func (c *ControlMessages) StateLoad(stateSourceObject state.Source) {
	stateSourceObject.Load(0, &c.HasTimestamp)
	stateSourceObject.Load(1, &c.Timestamp)
	stateSourceObject.Load(2, &c.HasInq)
	stateSourceObject.Load(3, &c.Inq)
	stateSourceObject.Load(4, &c.HasTOS)
	stateSourceObject.Load(5, &c.TOS)
	stateSourceObject.Load(6, &c.HasTClass)
	stateSourceObject.Load(7, &c.TClass)
	stateSourceObject.Load(8, &c.HasIPPacketInfo)
	stateSourceObject.Load(9, &c.PacketInfo)
}

func (l *LinkPacketInfo) StateTypeName() string {
	return "pkg/tcpip.LinkPacketInfo"
}

func (l *LinkPacketInfo) StateFields() []string {
	return []string{
		"Protocol",
		"PktType",
	}
}

func (l *LinkPacketInfo) beforeSave() {}

func (l *LinkPacketInfo) StateSave(stateSinkObject state.Sink) {
	l.beforeSave()
	stateSinkObject.Save(0, &l.Protocol)
	stateSinkObject.Save(1, &l.PktType)
}

func (l *LinkPacketInfo) afterLoad() {}

func (l *LinkPacketInfo) StateLoad(stateSourceObject state.Source) {
	stateSourceObject.Load(0, &l.Protocol)
	stateSourceObject.Load(1, &l.PktType)
}

func (l *LingerOption) StateTypeName() string {
	return "pkg/tcpip.LingerOption"
}

func (l *LingerOption) StateFields() []string {
	return []string{
		"Enabled",
		"Timeout",
	}
}

func (l *LingerOption) beforeSave() {}

func (l *LingerOption) StateSave(stateSinkObject state.Sink) {
	l.beforeSave()
	stateSinkObject.Save(0, &l.Enabled)
	stateSinkObject.Save(1, &l.Timeout)
}

func (l *LingerOption) afterLoad() {}

func (l *LingerOption) StateLoad(stateSourceObject state.Source) {
	stateSourceObject.Load(0, &l.Enabled)
	stateSourceObject.Load(1, &l.Timeout)
}

func (i *IPPacketInfo) StateTypeName() string {
	return "pkg/tcpip.IPPacketInfo"
}

func (i *IPPacketInfo) StateFields() []string {
	return []string{
		"NIC",
		"LocalAddr",
		"DestinationAddr",
	}
}

func (i *IPPacketInfo) beforeSave() {}

func (i *IPPacketInfo) StateSave(stateSinkObject state.Sink) {
	i.beforeSave()
	stateSinkObject.Save(0, &i.NIC)
	stateSinkObject.Save(1, &i.LocalAddr)
	stateSinkObject.Save(2, &i.DestinationAddr)
}

func (i *IPPacketInfo) afterLoad() {}

func (i *IPPacketInfo) StateLoad(stateSourceObject state.Source) {
	stateSourceObject.Load(0, &i.NIC)
	stateSourceObject.Load(1, &i.LocalAddr)
	stateSourceObject.Load(2, &i.DestinationAddr)
}

func init() {
	state.Register((*FullAddress)(nil))
	state.Register((*ControlMessages)(nil))
	state.Register((*LinkPacketInfo)(nil))
	state.Register((*LingerOption)(nil))
	state.Register((*IPPacketInfo)(nil))
}