Skip to content

Commit dc1400d

Browse files
authored
Merge pull request #674 from intel-go/master
Merge changes done in master into develop
2 parents 93f2384 + 90dbef7 commit dc1400d

File tree

3 files changed

+15
-5
lines changed

3 files changed

+15
-5
lines changed

devices/misc.go

+2
Original file line numberDiff line numberDiff line change
@@ -49,6 +49,8 @@ func GetDeviceID(nicName string) (string, error) {
4949
return raws[5], nil
5050
} else if IsPciID.Match([]byte(raws[4])) {
5151
return raws[4], nil
52+
} else if len(raws) >= 10 && IsPciID.Match([]byte(raws[10])) {
53+
return raws[10], nil
5254
} else {
5355
return "", fmt.Errorf("can't get device ID from path: %s", raw)
5456
}

flow/flow.go

+6-2
Original file line numberDiff line numberDiff line change
@@ -904,13 +904,15 @@ func SetReceiver(portId uint16) (OUT *Flow, err error) {
904904
// Creates RAW socket, returns new opened flow with received packets.
905905
func SetReceiverOS(device string) (*Flow, error) {
906906
v, ok := ioDevices[device]
907-
socketID := v.(int)
907+
var socketID int
908908
if !ok {
909909
socketID = low.InitDevice(device)
910910
if socketID == -1 {
911911
return nil, common.WrapWithNFError(nil, "Can't initialize socket", common.BadSocket)
912912
}
913913
ioDevices[device] = socketID
914+
} else {
915+
socketID = v.(int)
914916
}
915917
rings := low.CreateRings(burstSize*sizeMultiplier, 1)
916918
addOSReceiver(socketID, rings)
@@ -925,13 +927,15 @@ func SetSenderOS(IN *Flow, device string) error {
925927
return err
926928
}
927929
v, ok := ioDevices[device]
928-
socketID := v.(int)
930+
var socketID int
929931
if !ok {
930932
socketID = low.InitDevice(device)
931933
if socketID == -1 {
932934
return common.WrapWithNFError(nil, "Can't initialize socket", common.BadSocket)
933935
}
934936
ioDevices[device] = socketID
937+
} else {
938+
socketID = v.(int)
935939
}
936940
addSenderOS(socketID, finishFlow(IN), IN.inIndexNumber)
937941
return nil

flow/predefined.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -19,12 +19,12 @@ func handleARPICMPRequests(current *packet.Packet, context UserContext) bool {
1919
if arp != nil {
2020
if packet.SwapBytesUint16(arp.Operation) != packet.ARPRequest ||
2121
arp.THA != [types.EtherAddrLen]byte{} {
22-
return false
22+
return true
2323
}
2424

2525
port := portPair[types.ArrayToIPv4(arp.TPA)]
2626
if port == nil {
27-
return false
27+
return true
2828
}
2929

3030
// Prepare an answer to this request
@@ -69,7 +69,11 @@ func handleARPICMPRequests(current *packet.Packet, context UserContext) bool {
6969
(answerPacket.GetICMPNoCheck()).Type = types.ICMPTypeEchoResponse
7070
ipv4.HdrChecksum = packet.SwapBytesUint16(packet.CalculateIPv4Checksum(ipv4))
7171
answerPacket.ParseL7(types.ICMPNumber)
72-
icmp.Cksum = packet.SwapBytesUint16(packet.CalculateIPv4ICMPChecksum(ipv4, icmp, answerPacket.Data))
72+
(answerPacket.GetICMPNoCheck()).Cksum = packet.SwapBytesUint16(
73+
packet.CalculateIPv4ICMPChecksum(
74+
answerPacket.GetIPv4NoCheck(),
75+
answerPacket.GetICMPNoCheck(),
76+
answerPacket.Data))
7377

7478
answerPacket.SendPacket(port.port)
7579

0 commit comments

Comments
 (0)