Skip to content

Commit

Permalink
lint
Browse files Browse the repository at this point in the history
  • Loading branch information
Motok1 committed Jun 2, 2022
1 parent 0932e26 commit bbb88ca
Show file tree
Hide file tree
Showing 3 changed files with 83 additions and 83 deletions.
131 changes: 57 additions & 74 deletions pkg/packet/pcep/pcep.go
Original file line number Diff line number Diff line change
Expand Up @@ -12,16 +12,6 @@ import (
"math"
)

var srpID = 100000

type Server struct {
logger log.Logger
}

func NewServer() *Server {
return &Server{}
}

func AppendByteSlices(byteSlices ...[]uint8) []uint8 {
joinedSliceLength := 0
for _, byteSlice := range byteSlices {
Expand Down Expand Up @@ -274,36 +264,36 @@ const (

const TL_LENGTH = 4

func unmarshalPcepTLVs(tlvs *[]Tlv, pcepTLVs []uint8) {
fmt.Printf("pcep TLVs byte: %#v\n", pcepTLVs)
tlvType := binary.BigEndian.Uint16(pcepTLVs[0:2])
tlvLength := uint16(math.Ceil(float64(binary.BigEndian.Uint16(pcepTLVs[2:4]))/4) * 4) // Include padding
fmt.Printf(" TLV length: %d\n", tlvLength)
tlv := &Tlv{
Type: tlvType,
Length: tlvLength,
Value: pcepTLVs[4 : 4+tlvLength],
}
*tlvs = append(*tlvs, *tlv)
switch tlvType {
case TLV_IPV4_LSP_IDENTIFIERS:
fmt.Printf(" Unmarshal TLV_IPV4_LSP_IDENTIFIERS (%v)\n", tlvType)
case TLV_STATEFUL_PCE_CAPABILITY:
fmt.Printf(" Unmarshal TLV_STATEFUL_PCE_CAPABILITY (%v)\n", tlvType)
case TLV_SYMBOLIC_PATH_NAME:
fmt.Printf(" Unmarshal TLV_SYMBOLIC_PATH_NAME (%v)\n", tlvType)
case TLV_SR_PCE_CAPABILITY:
fmt.Printf(" Unmarshal TLV_SR_PCE_CAPABILITY (%v)\n", tlvType)
case TLV_ASSOC_TYPE_LIST:
fmt.Printf(" Unmarshal TLV_ASSOC_TYPE_LIST (%v)\n", tlvType)
default:
fmt.Printf(" Unimplemented TLV: %v\n", tlvType)
}
// func unmarshalPcepTLVs(tlvs *[]Tlv, pcepTLVs []uint8) {
// fmt.Printf("pcep TLVs byte: %#v\n", pcepTLVs)
// tlvType := binary.BigEndian.Uint16(pcepTLVs[0:2])
// tlvLength := uint16(math.Ceil(float64(binary.BigEndian.Uint16(pcepTLVs[2:4]))/4) * 4) // Include padding
// fmt.Printf(" TLV length: %d\n", tlvLength)
// tlv := &Tlv{
// Type: tlvType,
// Length: tlvLength,
// Value: pcepTLVs[4 : 4+tlvLength],
// }
// *tlvs = append(*tlvs, *tlv)
// switch tlvType {
// case TLV_IPV4_LSP_IDENTIFIERS:
// fmt.Printf(" Unmarshal TLV_IPV4_LSP_IDENTIFIERS (%v)\n", tlvType)
// case TLV_STATEFUL_PCE_CAPABILITY:
// fmt.Printf(" Unmarshal TLV_STATEFUL_PCE_CAPABILITY (%v)\n", tlvType)
// case TLV_SYMBOLIC_PATH_NAME:
// fmt.Printf(" Unmarshal TLV_SYMBOLIC_PATH_NAME (%v)\n", tlvType)
// case TLV_SR_PCE_CAPABILITY:
// fmt.Printf(" Unmarshal TLV_SR_PCE_CAPABILITY (%v)\n", tlvType)
// case TLV_ASSOC_TYPE_LIST:
// fmt.Printf(" Unmarshal TLV_ASSOC_TYPE_LIST (%v)\n", tlvType)
// default:
// fmt.Printf(" Unimplemented TLV: %v\n", tlvType)
// }

if len(pcepTLVs)-int(tlvLength+TL_LENGTH) >= 4 {
unmarshalPcepTLVs(tlvs, pcepTLVs[(tlvLength+TL_LENGTH):])
}
}
// if len(pcepTLVs)-int(tlvLength+TL_LENGTH) >= 4 {
// unmarshalPcepTLVs(tlvs, pcepTLVs[(tlvLength+TL_LENGTH):])
// }
// }

func (tlv *Tlv) Serialize() []uint8 {
bytePcepTLV := []uint8{}
Expand Down Expand Up @@ -712,8 +702,6 @@ type SrEroSubobject struct { // RFC8664 4.3.1
}

func (o *SrEroSubobject) Serialize() ([]uint8, error) {
byteSrEroSubobject := []uint8{}

buf := make([]uint8, 4)
buf[0] = o.SubobjectType
if o.LFlag {
Expand All @@ -736,7 +724,7 @@ func (o *SrEroSubobject) Serialize() ([]uint8, error) {
byteSid := make([]uint8, 4)
binary.BigEndian.PutUint32(byteSid, o.Sid<<12)

byteSrEroSubobject = AppendByteSlices(buf, byteSid, o.Nai)
byteSrEroSubobject := AppendByteSlices(buf, byteSid, o.Nai)
return byteSrEroSubobject, nil
}

Expand Down Expand Up @@ -780,8 +768,6 @@ type EndpointObject struct {
ObjectType uint8 // ipv4: 1, ipv6: 2
srcIPv4 []uint8
dstIPv4 []uint8
srcIPv6 []uint8
dstIPv6 []uint8
}

func (o EndpointObject) Serialize() ([]uint8, error) {
Expand Down Expand Up @@ -860,36 +846,6 @@ func NewVendorInformationObject(vendor string, color uint32, preference uint32)
return vendorInformationObject
}

///////////////////////////////////////////////////////////////////
//////////////////////// PCUpd object //////////////////////////////

// func (s *Server) SendPCUpd(conn net.Conn, path Path) {
// byteObjects := NewPCUpdObjects(path)

// messageLength := uint16(len(byteObjects) + COMMON_HEADER_LENGTH)
// byteCommonHeader := NewCommonHeader(MT_UPDATE, messageLength)

// pcupdMessage := append(byteCommonHeader, byteObjects...)

// fmt.Printf("[PCEP] Send PCUpd\n")
// _, err := conn.Write(pcupdMessage)
// if err != nil {
// fmt.Printf("pcupd error")
// log.Fatal(nil)
// }
// }

// func NewPCUpdObjects(path Path) []uint8 {
// // TODO: 経路のパラメータによってはObjectの数変わる?要調査
// byteSrpObject := NewSrpObject()
// byteLspObject := EncapLspObject(path.LspObject)
// byteEroObject := NewEroObject(path.SrEroSubobject)
// byteLspaObject := EncapLspaObject(path.LspaObject)
// byteMetricObject := EncapMetricObject(path.MetricObject)
// byteObjects := appendByteSlices(byteSrpObject, byteLspObject, byteEroObject, byteLspaObject, byteMetricObject)
// return (byteObjects)
// }

/*---------------- PCEP Message struct ----------------*/
//////////////////////// PCRpt Message //////////////////////////////
type PCRptMessage struct {
Expand Down Expand Up @@ -1044,6 +1000,33 @@ func (o *PCInitiateMessage) Serialize() ([]uint8, error) {
// return (byteObjects)
// }

// func (s *Server) SendPCUpd(conn net.Conn, path Path) {
// byteObjects := NewPCUpdObjects(path)

// messageLength := uint16(len(byteObjects) + COMMON_HEADER_LENGTH)
// byteCommonHeader := NewCommonHeader(MT_UPDATE, messageLength)

// pcupdMessage := append(byteCommonHeader, byteObjects...)

// fmt.Printf("[PCEP] Send PCUpd\n")
// _, err := conn.Write(pcupdMessage)
// if err != nil {
// fmt.Printf("pcupd error")
// log.Fatal(nil)
// }
// }

// func NewPCUpdObjects(path Path) []uint8 {
// // TODO: 経路のパラメータによってはObjectの数変わる?要調査
// byteSrpObject := NewSrpObject()
// byteLspObject := EncapLspObject(path.LspObject)
// byteEroObject := NewEroObject(path.SrEroSubobject)
// byteLspaObject := EncapLspaObject(path.LspaObject)
// byteMetricObject := EncapMetricObject(path.MetricObject)
// byteObjects := appendByteSlices(byteSrpObject, byteLspObject, byteEroObject, byteLspaObject, byteMetricObject)
// return (byteObjects)
// }

/* utils */
func i32tob(value uint32) []uint8 {
// uint32(0x1a2b3c4d) -> []byte{0x1a, 0x2b, 0x3c, 0x4d}
Expand Down
19 changes: 16 additions & 3 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -39,9 +39,20 @@ type Server struct {
func NewPce() error {
s := &Server{}
// PCEP の Listen を開始する
go s.Listen()
go func() {
if err := s.Listen(); err != nil {
fmt.Printf("PCEP listen Error\n")
}

}()
// gRPC の Listen を開始する
go s.grpcListen()
go func() {
if err := s.grpcListen(); err != nil {
fmt.Printf("gRPC listen Error\n")
}

}()

// sessionList の表示
for {
s.printSessionList()
Expand Down Expand Up @@ -121,7 +132,9 @@ func (s *Server) CreateLsp(ctx context.Context, lspData *pb.LspData) (*pb.LspSta
}
labels = append(labels, pcepLabel)
}
pcepSession.SendPCInitiate(lspData.GetPolicyName(), labels, lspData.GetColor(), uint32(100), lspData.GetSrcAddr(), lspData.GetDstAddr())
if err := pcepSession.SendPCInitiate(lspData.GetPolicyName(), labels, lspData.GetColor(), uint32(100), lspData.GetSrcAddr(), lspData.GetDstAddr()); err != nil {
return &pb.LspStatus{IsSuccess: false}, err
}
return &pb.LspStatus{IsSuccess: true}, nil
}
}
Expand Down
16 changes: 10 additions & 6 deletions pkg/server/session.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,7 +55,9 @@ func (s *Session) Established() {

close := make(chan bool)
go func() {
s.ReceivePcepMessage()
if err := s.ReceivePcepMessage(); err != nil {
fmt.Printf("Receive PCEP error\n")
}
close <- true
}()

Expand Down Expand Up @@ -102,10 +104,10 @@ func ReadOpen(conn net.Conn) error {

// CommonHeader Validation
if commonHeader.Version != 1 {
log.Panicf("PCEP version mismatch: %i", commonHeader.Version)
log.Panicf("PCEP version mismatch: %#v", commonHeader.Version)
}
if commonHeader.MessageType != pcep.MT_OPEN {
log.Panicf("Message Type is : %i, This peer has not been opened.", commonHeader.MessageType)
log.Panicf("Message Type is : %#v, This peer has not been opened.", commonHeader.MessageType)
}

fmt.Printf("[session] Receive Open\n")
Expand All @@ -122,11 +124,11 @@ func ReadOpen(conn net.Conn) error {
}
// first get が open object でない場合は破棄
if commonObjectHeader.ObjectClass != pcep.OC_OPEN {
log.Panicf("ObjectClass %i is not Open", commonObjectHeader.ObjectClass)
log.Panicf("ObjectClass %#v is not Open", commonObjectHeader.ObjectClass)
}

if commonObjectHeader.ObjectType != 1 {
log.Panicf("Unimplemented objectType: %i", commonObjectHeader.ObjectType)
log.Panicf("Unimplemented objectType: %#v", commonObjectHeader.ObjectType)
}

var openObject pcep.OpenObject
Expand Down Expand Up @@ -226,7 +228,9 @@ func (s *Session) ReceivePcepMessage() error {
}
// ポインタ型かも
var pcrptMessage pcep.PCRptMessage
pcrptMessage.DecodeFromBytes(bytePcrptObject)
if err := pcrptMessage.DecodeFromBytes(bytePcrptObject); err != nil {
return err
}
if pcrptMessage.LspObject.PlspId == 0 && !pcrptMessage.LspObject.SFlag {
//sync 終了
fmt.Printf(" Finish PCRpt State Synchronization\n")
Expand Down

0 comments on commit bbb88ca

Please sign in to comment.