Skip to content

Commit

Permalink
Allow building on non-linux
Browse files Browse the repository at this point in the history
Signed-off-by: Sorin Dumitru <[email protected]>
  • Loading branch information
sorindumitru committed Nov 18, 2024
1 parent f1b4001 commit e9ea66d
Show file tree
Hide file tree
Showing 3 changed files with 64 additions and 47 deletions.
69 changes: 26 additions & 43 deletions pkg/peertracker/trace.go
Original file line number Diff line number Diff line change
@@ -1,54 +1,37 @@
package peertracker

import "net"
import "fmt"
import "github.com/mdlayher/vsock"
import (
"github.com/mdlayher/vsock"
)

func (lf *ListenerFactory) ListenVSock(port uint32) (*Listener, error) {
if lf.NewUnixListener == nil {
lf.NewVSockListener = vsock.Listen
}
if lf.NewTracker == nil {
lf.NewTracker = NewTracker
}
if lf.Log == nil {
lf.Log = newNoopLogger()
}
return lf.listenVSock(port)
if lf.NewUnixListener == nil {
lf.NewVSockListener = vsock.Listen
}
if lf.NewTracker == nil {
lf.NewTracker = NewTracker
}
if lf.Log == nil {
lf.Log = newNoopLogger()
}
return lf.listenVSock(port)
}

func (lf *ListenerFactory) listenVSock(port uint32) (*Listener, error) {
l, err := lf.NewVSockListener(port, nil)
if err != nil {
return nil, err
}

tracker, err := lf.NewTracker(lf.Log)
if err != nil {
l.Close()
return nil, err
}

return &Listener{
l: l,
Tracker: tracker,
log: lf.Log,
}, nil
}
l, err := lf.NewVSockListener(port, nil)
if err != nil {
return nil, err
}

func CallerFromVSockConn(conn net.Conn) (CallerInfo, error) {
var info CallerInfo
cid := int(conn.RemoteAddr().(*vsock.Addr).ContextID)
pid := CID2PID(cid)
fmt.Printf("Got PID %d for CID %d\n", pid, cid)
if pid < 0 {
return info, fmt.Errorf("Could not fetch PID from CID")
tracker, err := lf.NewTracker(lf.Log)
if err != nil {
l.Close()
return nil, err
}
info = CallerInfo{
PID: int32(pid),
}

info.Addr = conn.RemoteAddr()
return info, nil
return &Listener{
l: l,
Tracker: tracker,
log: lf.Log,
}, nil
}

29 changes: 25 additions & 4 deletions pkg/peertracker/trace_linux.go
Original file line number Diff line number Diff line change
@@ -1,9 +1,14 @@
package peertracker

import "os/exec"
import "fmt"
import "bytes"
import "gopkg.in/yaml.v3"
import (
"bytes"
"fmt"
"net"
"os/exec"

"github.com/mdlayher/vsock"
"gopkg.in/yaml.v3"
)

// #include <tracefs.h>
//import "C"
Expand Down Expand Up @@ -41,3 +46,19 @@ func CID2PID(cid int) int {
}
return c2p.Pid
}

func CallerFromVSockConn(conn net.Conn) (CallerInfo, error) {
var info CallerInfo
cid := int(conn.RemoteAddr().(*vsock.Addr).ContextID)
pid := CID2PID(cid)
fmt.Printf("Got PID %d for CID %d\n", pid, cid)
if pid < 0 {
return info, fmt.Errorf("Could not fetch PID from CID")
}
info = CallerInfo{
PID: int32(pid),
}

info.Addr = conn.RemoteAddr()
return info, nil
}
13 changes: 13 additions & 0 deletions pkg/peertracker/trace_others.go
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
//go:build !linux
// +build !linux

package peertracker

import (
"errors"
"net"
)

func CallerFromVSockConn(conn net.Conn) (CallerInfo, error) {
return CallerInfo{}, errors.New("not supported")
}

0 comments on commit e9ea66d

Please sign in to comment.