From cc57bdae0743f469f6979dde8c97adca397678c6 Mon Sep 17 00:00:00 2001 From: Matthias Frei Date: Fri, 3 Dec 2021 13:55:22 +0100 Subject: [PATCH] sensorapp: convert to pan Add path policy options to command line. --- sensorapp/sensorfetcher/sensorfetcher.go | 19 ++++++++++++++++--- sensorapp/sensorserver/sensorserver.go | 12 ++++++++---- 2 files changed, 24 insertions(+), 7 deletions(-) diff --git a/sensorapp/sensorfetcher/sensorfetcher.go b/sensorapp/sensorfetcher/sensorfetcher.go index 92d269f0..00524ede 100644 --- a/sensorapp/sensorfetcher/sensorfetcher.go +++ b/sensorapp/sensorfetcher/sensorfetcher.go @@ -18,12 +18,16 @@ package main import ( + "context" "flag" "fmt" "log" "os" + "strings" - "github.com/netsec-ethz/scion-apps/pkg/appnet" + "inet.af/netaddr" + + "github.com/netsec-ethz/scion-apps/pkg/pan" ) func check(e error) { @@ -33,8 +37,13 @@ func check(e error) { } func main() { - serverAddrStr := flag.String("s", "", "Server address ( or )") + interactive := flag.Bool("i", false, "Interactive path selection, prompt to choose path") + sequence := flag.String("sequence", "", "Sequence of space separated hop predicates to specify path") + preference := flag.String("preference", "", "Preference sorting order for paths. "+ + "Comma-separated list of available sorting options: "+ + strings.Join(pan.AvailablePreferencePolicies, "|")) + flag.Parse() if len(*serverAddrStr) == 0 { @@ -42,7 +51,11 @@ func main() { os.Exit(2) } - conn, err := appnet.Dial(*serverAddrStr) + policy, err := pan.PolicyFromCommandline(*sequence, *preference, *interactive) + check(err) + serverAddr, err := pan.ResolveUDPAddr(*serverAddrStr) + check(err) + conn, err := pan.DialUDP(context.Background(), netaddr.IPPort{}, serverAddr, policy, nil) check(err) receivePacketBuffer := make([]byte, 2500) diff --git a/sensorapp/sensorserver/sensorserver.go b/sensorapp/sensorserver/sensorserver.go index 49e16ba2..17435582 100644 --- a/sensorapp/sensorserver/sensorserver.go +++ b/sensorapp/sensorserver/sensorserver.go @@ -19,13 +19,16 @@ package main import ( "bufio" + "context" "flag" "log" "os" "strings" "sync" - "github.com/netsec-ethz/scion-apps/pkg/appnet" + "inet.af/netaddr" + + "github.com/netsec-ethz/scion-apps/pkg/pan" ) const ( @@ -78,13 +81,14 @@ func main() { port := flag.Uint("p", 40002, "Server Port") flag.Parse() - conn, err := appnet.ListenPort(uint16(*port)) + local := netaddr.IPPortFrom(netaddr.IP{}, uint16(*port)) + conn, err := pan.ListenUDP(context.Background(), local, nil) check(err) receivePacketBuffer := make([]byte, 2500) sendPacketBuffer := make([]byte, 2500) for { - _, clientAddress, err := conn.ReadFrom(receivePacketBuffer) + _, clientAddress, path, err := conn.ReadFromVia(receivePacketBuffer) check(err) // Packet received, send back response to same client @@ -102,7 +106,7 @@ func main() { sensorValues = timeStr + "\n" + sensorValues copy(sendPacketBuffer, sensorValues) - _, err = conn.WriteTo(sendPacketBuffer[:len(sensorValues)], clientAddress) + _, err = conn.WriteToVia(sendPacketBuffer[:len(sensorValues)], clientAddress, path) check(err) } }