From 0b0afeacf8a2ed8115dba6e4d1c17fbffb900ed3 Mon Sep 17 00:00:00 2001 From: Malte Bauch <malte.bauch@stud.h-da.de> Date: Thu, 28 Sep 2023 15:28:51 +0200 Subject: [PATCH] Add AssignForwardingRoute method to KMS --- internal/kms/kms.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/internal/kms/kms.go b/internal/kms/kms.go index 2cb9be31..1d49bae1 100644 --- a/internal/kms/kms.go +++ b/internal/kms/kms.go @@ -220,6 +220,37 @@ func (kms *EKMS) AddPeer(kmsPeerSocket string, servingQLE *QuantumElement) (*kms return peer, nil } +func (kms *EKMS) AssignForwardingRoute(pId, pHop, nHop string) error { + pathId, err := uuid.Parse(pId) + if err != nil { + return fmt.Errorf("The given path id %s is no uuid; err = ", pathId, err) + } + + var previousHop *kmsPeer + var nextHop *kmsPeer + var ok bool + if pHop != "" { + previousHop, ok = kms.KmsPeers[pHop] + if !ok { + return fmt.Errorf("No peer found for %s", pHop) + } + } + if nHop != "" { + nextHop, ok = kms.KmsPeers[nHop] + if !ok { + return fmt.Errorf("No peer found for %s", nHop) + } + } + + // set the route within routing table + kms.routingTable[pathId] = &Route{ + Previous: previousHop, + Next: nextHop, + } + + return nil +} + // TODO/XXX error handling func (kms *EKMS) RemovePeer(kmsPeerSocket string) { if _, there := kms.KmsPeers[kmsPeerSocket]; there { -- GitLab