@@ -34,8 +34,18 @@ func FindDefaultDpdkDriver(nicName string) string {
34
34
35
35
// GetDeviceID returns the device ID of given NIC name.
36
36
func GetDeviceID (nicName string ) (string , error ) {
37
- // DEV_ID=$(basename $(readlink /sys/class/net/<nicName>/device))
38
- return readlinkBaseCmd (pathSysClassNetDevice .With (nicName ))
37
+ // DEV_ID=$(basename $(readlink /sys/class/net/<nicName>))
38
+ raw , err := readlinkCmd (pathSysClassNetDevice .With (nicName ))
39
+ if err != nil {
40
+ return "" , err
41
+ }
42
+ // raw should be like /sys/devices/pci0002:00/0000:00:08.0/virtio2/net/ens8
43
+ raws := strings .Split (raw , "/" )
44
+ if len (raws ) < 5 {
45
+ return "" , fmt .Errorf ("path not correct" )
46
+ }
47
+ return raws [4 ], nil
48
+
39
49
}
40
50
41
51
// IsModuleLoaded checks if the kernel has already loaded the driver or not.
@@ -69,12 +79,20 @@ func writeToTargetWithData(sysfs string, flag int, mode os.FileMode, data string
69
79
return nil
70
80
}
71
81
72
- func readlinkBaseCmd (path string ) (string , error ) {
73
- output , err := cmdOutputWithTimeout (defaultTimeoutLimitation , "readlink" , path )
82
+ func readlinkCmd (path string ) (string , error ) {
83
+ output , err := cmdOutputWithTimeout (defaultTimeoutLimitation , "readlink" , "-f" , path )
74
84
if err != nil {
75
85
return "" , fmt .Errorf ("Cmd Execute readlink failed: %s" , err .Error ())
76
86
}
77
87
outputStr := strings .Trim (string (output ), "\n " )
88
+ return outputStr , nil
89
+ }
90
+
91
+ func readlinkBaseCmd (path string ) (string , error ) {
92
+ outputStr , err := readlinkCmd (path )
93
+ if err != nil {
94
+ return "" , fmt .Errorf ("Cmd Execute readlink failed: %s" , err .Error ())
95
+ }
78
96
result := filepath .Base (outputStr )
79
97
return result , nil
80
98
}
0 commit comments