Skip to content

Commit c6c8852

Browse files
committed
Fix binding to can interface on linux
1 parent b8fc6d1 commit c6c8852

File tree

2 files changed

+3
-35
lines changed

2 files changed

+3
-35
lines changed

Makefile

+3-2
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,11 @@ GOBUILD=$(GOCMD) build
33
GOCLEAN=$(GOCMD) clean
44
GOTEST=$(GOCMD) test
55
GOGET=$(GOCMD) get
6+
67
BINARY_NAME=candump
8+
VERSION=$(shell git describe --exact-match --tags 2>/dev/null)
79
BUILD_DIR=build
810
BUILD_SRC=cmd/candump.go
9-
PACKAGE_RPI=$(BINARY_NAME)_linux_armhf
1011

1112
all: test build
1213
build:
@@ -20,7 +21,7 @@ clean:
2021
rm -rf $(BINARY_NAME)
2122

2223
package-rpi: build-rpi
23-
tar -cvzf $(PACKAGE_RPI).tar.gz -C $(BUILD_DIR) $(BINARY_NAME)
24+
tar -cvzf $(BINARY_NAME)-$(VERSION)_linux_armhf.tar.gz -C $(BUILD_DIR) $(BINARY_NAME)
2425

2526
build-rpi:
2627
GOOS=linux GOARCH=arm GOARM=6 $(GOBUILD) -o $(BUILD_DIR)/$(BINARY_NAME) -i $(BUILD_SRC)

readwritecloser.go

-33
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,7 @@
11
package can
22

33
import (
4-
"fmt"
54
"io"
6-
"net"
7-
"os"
8-
"syscall"
95
)
106

117
// The Reader interface extends the `io.Reader` interface by method
@@ -31,39 +27,10 @@ type ReadWriteCloser interface {
3127
io.Closer
3228
}
3329

34-
// Socket protocols
35-
const (
36-
Raw uint8 = 1 // CAN_RAW
37-
Bcm uint8 = 2 // CAN_BCM
38-
TP16 uint8 = 3
39-
TP20 uint8 = 4
40-
MCNet uint8 = 5
41-
ISOTp uint8 = 6
42-
)
43-
4430
type readWriteCloser struct {
4531
rwc io.ReadWriteCloser
4632
}
4733

48-
// NewReadWriteCloserForInterface returns a ReadWriteCloser for a network interface.
49-
func NewReadWriteCloserForInterface(i *net.Interface) (ReadWriteCloser, error) {
50-
proto := Raw
51-
s, err := syscall.Socket(AF_CAN, syscall.SOCK_RAW, int(proto) /* 0? */)
52-
if err != nil {
53-
return nil, err
54-
}
55-
56-
addr := NewSockaddr(uint16(proto) /* can.AF_CAN? */, i.Index /* 0 for all interfaces? */)
57-
58-
if err := syscall.Bind(s, addr); err != nil {
59-
return nil, err
60-
}
61-
62-
f := os.NewFile(uintptr(s), fmt.Sprintf("fd %d", s))
63-
64-
return &readWriteCloser{f}, nil
65-
}
66-
6734
// NewReadWriteCloser returns a ReadWriteCloser for an `io.ReadWriteCloser`.
6835
func NewReadWriteCloser(rwc io.ReadWriteCloser) ReadWriteCloser {
6936
return &readWriteCloser{rwc}

0 commit comments

Comments
 (0)