Skip to content
This repository has been archived by the owner on Oct 20, 2024. It is now read-only.

Commit

Permalink
Adds pfcp session header
Browse files Browse the repository at this point in the history
  • Loading branch information
gruyaume committed Jan 6, 2024
1 parent b882e32 commit 47c861b
Show file tree
Hide file tree
Showing 14 changed files with 265 additions and 148 deletions.
33 changes: 16 additions & 17 deletions client/client.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@ import (
"fmt"
"log"

"github.com/dot-5g/pfcp/headers"
"github.com/dot-5g/pfcp/ie"
"github.com/dot-5g/pfcp/messages"
"github.com/dot-5g/pfcp/network"
Expand All @@ -24,7 +23,7 @@ func New(ServerAddress string) *Pfcp {
return &Pfcp{ServerAddress: ServerAddress, Udp: udpClient}
}

func (pfcp *Pfcp) sendPfcpMessage(header headers.PFCPHeader, elements []ie.InformationElement) error {
func (pfcp *Pfcp) sendPfcpMessage(header messages.PFCPHeader, elements []ie.InformationElement) error {
var payload []byte
for _, element := range elements {
payload = append(payload, element.Serialize()...)
Expand All @@ -38,14 +37,14 @@ func (pfcp *Pfcp) sendPfcpMessage(header headers.PFCPHeader, elements []ie.Infor
return nil
}

func serializeMessage(header headers.PFCPHeader, payload []byte) []byte {
header.MessageLength = uint16(4 + len(payload))
headerBytes := headers.SerializePFCPHeader(header)
func serializeMessage(header messages.PFCPHeader, payload []byte) []byte {
header.MessageLength = uint16(len(payload))
headerBytes := header.Serialize()
return append(headerBytes, payload...)
}

func (pfcp *Pfcp) SendHeartbeatRequest(msg messages.HeartbeatRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.HeartbeatRequestMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.HeartbeatRequestMessageType, sequenceNumber)

ies := []ie.InformationElement{msg.RecoveryTimeStamp}

Expand All @@ -61,7 +60,7 @@ func (pfcp *Pfcp) SendHeartbeatRequest(msg messages.HeartbeatRequest, sequenceNu
}

func (pfcp *Pfcp) SendHeartbeatResponse(msg messages.HeartbeatResponse, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.HeartbeatResponseMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.HeartbeatResponseMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.RecoveryTimeStamp}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -71,7 +70,7 @@ func (pfcp *Pfcp) SendHeartbeatResponse(msg messages.HeartbeatResponse, sequence
}

func (pfcp *Pfcp) SendPFCPAssociationSetupRequest(msg messages.PFCPAssociationSetupRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationSetupRequestMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationSetupRequestMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.RecoveryTimeStamp}

if !msg.UPFunctionFeatures.IsZeroValue() {
Expand All @@ -86,7 +85,7 @@ func (pfcp *Pfcp) SendPFCPAssociationSetupRequest(msg messages.PFCPAssociationSe
}

func (pfcp *Pfcp) SendPFCPAssociationSetupResponse(msg messages.PFCPAssociationSetupResponse, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationSetupResponseMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationSetupResponseMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.Cause, msg.RecoveryTimeStamp}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -96,7 +95,7 @@ func (pfcp *Pfcp) SendPFCPAssociationSetupResponse(msg messages.PFCPAssociationS
}

func (pfcp *Pfcp) SendPFCPAssociationUpdateRequest(msg messages.PFCPAssociationUpdateRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationUpdateRequestMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationUpdateRequestMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -106,7 +105,7 @@ func (pfcp *Pfcp) SendPFCPAssociationUpdateRequest(msg messages.PFCPAssociationU
}

func (pfcp *Pfcp) SendPFCPAssociationUpdateResponse(msg messages.PFCPAssociationUpdateResponse, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationUpdateResponseMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationUpdateResponseMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.Cause}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -116,7 +115,7 @@ func (pfcp *Pfcp) SendPFCPAssociationUpdateResponse(msg messages.PFCPAssociation
}

func (pfcp *Pfcp) SendPFCPAssociationReleaseRequest(msg messages.PFCPAssociationReleaseRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationReleaseRequestMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationReleaseRequestMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -126,7 +125,7 @@ func (pfcp *Pfcp) SendPFCPAssociationReleaseRequest(msg messages.PFCPAssociation
}

func (pfcp *Pfcp) SendPFCPAssociationReleaseResponse(msg messages.PFCPAssociationReleaseResponse, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPAssociationReleaseResponseMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPAssociationReleaseResponseMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.Cause}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -136,7 +135,7 @@ func (pfcp *Pfcp) SendPFCPAssociationReleaseResponse(msg messages.PFCPAssociatio
}

func (pfcp *Pfcp) SendPFCPNodeReportRequest(msg messages.PFCPNodeReportRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPNodeReportRequestMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPNodeReportRequestMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.NodeReportType}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -146,7 +145,7 @@ func (pfcp *Pfcp) SendPFCPNodeReportRequest(msg messages.PFCPNodeReportRequest,
}

func (pfcp *Pfcp) SendPFCPNodeReportResponse(msg messages.PFCPNodeReportResponse, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPNodeReportResponseMessageType, sequenceNumber)
header := messages.NewNodePFCPHeader(messages.PFCPNodeReportResponseMessageType, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.Cause}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand All @@ -155,8 +154,8 @@ func (pfcp *Pfcp) SendPFCPNodeReportResponse(msg messages.PFCPNodeReportResponse
return nil
}

func (pfcp *Pfcp) SendPFCPSessionEstablishmentRequest(msg messages.PFCPSessionEstablishmentRequest, sequenceNumber uint32) error {
header := headers.NewPFCPHeader(messages.PFCPSessionEstablishmentRequestMessageType, sequenceNumber)
func (pfcp *Pfcp) SendPFCPSessionEstablishmentRequest(msg messages.PFCPSessionEstablishmentRequest, seid uint64, sequenceNumber uint32) error {
header := messages.NewSessionPFCPHeader(messages.PFCPSessionEstablishmentRequestMessageType, seid, sequenceNumber)
ies := []ie.InformationElement{msg.NodeID, msg.CPFSEID, msg.CreatePDR, msg.CreateFAR}
err := pfcp.sendPfcpMessage(header, ies)
if err != nil {
Expand Down
67 changes: 0 additions & 67 deletions headers/header.go

This file was deleted.

7 changes: 0 additions & 7 deletions ie/fseid.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,6 @@ package ie
import (
"bytes"
"encoding/binary"
"fmt"
"net"
)

Expand All @@ -29,9 +28,6 @@ func NewFSEID(seid uint64, ipv4Address string, ipv6Address string) (FSEID, error
fseid.IPv4 = ipv4.To4()
fseid.IPv6 = ipv6.To16()

fmt.Print("IPv4: ", fseid.IPv4, "\n")
fmt.Print("IPv6: ", fseid.IPv6, "\n")

if fseid.IPv4 != nil {
fseid.V4 = true
length += 4
Expand Down Expand Up @@ -80,9 +76,6 @@ func (fseid FSEID) Serialize() []byte {
}

func DeserializeFSEID(ieType uint16, ieLength uint16, ieValue []byte) (FSEID, error) {
fmt.Printf("ieType: %v\n", ieType)

fmt.Printf("ieValue: %v\n", ieValue)
v4 := ieValue[0]&0x02 > 0
v6 := ieValue[0]&0x01 > 0
seid := binary.BigEndian.Uint64(ieValue[1:9])
Expand Down
4 changes: 2 additions & 2 deletions messages/heartbeat.go
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,7 @@ type HeartbeatResponse struct {
RecoveryTimeStamp ie.RecoveryTimeStamp // Mandatory
}

func ParseHeartbeatRequest(data []byte) (HeartbeatRequest, error) {
func DeserializeHeartbeatRequest(data []byte) (PFCPMessage, error) {
ies, err := ie.ParseInformationElements(data)
var recoveryTimeStamp ie.RecoveryTimeStamp
var sourceIPAddress ie.SourceIPAddress
Expand All @@ -34,7 +34,7 @@ func ParseHeartbeatRequest(data []byte) (HeartbeatRequest, error) {
}, err
}

func ParseHeartbeatResponse(data []byte) (HeartbeatResponse, error) {
func DeserializeHeartbeatResponse(data []byte) (PFCPMessage, error) {
ies, err := ie.ParseInformationElements(data)
var recoveryTimeStamp ie.RecoveryTimeStamp
for _, elem := range ies {
Expand Down
Loading

0 comments on commit 47c861b

Please sign in to comment.