This commit is contained in:
2026-10-20 15:09:00 +00:00
parent acfd556452
commit 08c871f84b
6 changed files with 67 additions and 67 deletions
+27 -27
View File
@@ -1,16 +1,16 @@
package iproute2mapping
import (
"os"
"bufio"
"strings"
"strconv"
"fmt"
"os"
"strconv"
"strings"
)
// Storage for mapping
var ByName = make(map[int]map[string]int)
var ById = make(map[int]map[int]string)
var ByName = make(map[int]map[string]int)
var ById = make(map[int]map[int]string)
// Mapping types
const (
@@ -20,49 +20,49 @@ const (
// Paths
var filePaths = map[int]string{
PROTOCOL: "/etc/iproute2/rt_protos",
TABLE: "/etc/iproute2/rt_tables",
PROTOCOL: "/etc/iproute2/rt_protos",
TABLE: "/etc/iproute2/rt_tables",
}
// Export error-check
var Errors []error;
var Errors []error
func init() {
var err error
for mapType, filePath := range filePaths{
for mapType, filePath := range filePaths {
ByName[mapType], ById[mapType], err = readFromFile(filePath)
if(err != nil){
if err != nil {
Errors = append(Errors,
fmt.Errorf("failed reading mapping-file '%s': %s", filePath, err),
);
)
}
}
}
func readFromFile(filePath string) (mapByName map[string]int, mapById map[int]string, err error){
func readFromFile(filePath string) (mapByName map[string]int, mapById map[int]string, err error) {
file, err := os.Open(filePath)
if(err != nil){
return nil, nil, err;
if err != nil {
return nil, nil, err
}
defer file.Close()
scanner := bufio.NewScanner(file)
scanner.Split(bufio.ScanLines)
scanner.Split(bufio.ScanLines)
mapByName = make(map[string]int)
mapById = make(map[int]string)
mapById = make(map[int]string)
// Go through file line-by-line
for scanner.Scan() {
for scanner.Scan() {
text := scanner.Text()
if(text == "" || strings.HasPrefix(text, "#")){
if text == "" || strings.HasPrefix(text, "#") {
continue
}
id, name, err := getMappingFromText(text)
if(err != nil){
if err != nil {
// Only warn as we can continue processing the file
Errors = append(Errors,
Errors = append(Errors,
fmt.Errorf("mappig-data invalid '%s': %s", text, err),
)
continue
@@ -70,7 +70,7 @@ func readFromFile(filePath string) (mapByName map[string]int, mapById map[int]st
mapByName[name] = id
mapById[id] = name
}
}
return
}
@@ -80,7 +80,7 @@ func getMappingFromText(text string) (int, string, error) {
data := strings.Split(text, "\t")
id, err := strconv.Atoi(data[0])
if(err != nil){
if err != nil {
return 0, "", err
}
@@ -88,13 +88,13 @@ func getMappingFromText(text string) (int, string, error) {
}
// Try getting an id from a name (or a string containing an id) with a specified type
func TryGetId(mappingType int, name string) (int, error){
func TryGetId(mappingType int, name string) (int, error) {
// Try to convert name to id
id, err := strconv.Atoi(name)
if(err != nil){ // name given -> Convert to id
id, err := strconv.Atoi(name)
if err != nil { // name given -> Convert to id
var found bool
id, found = ByName[mappingType][name]
if(!found){
if !found {
return 0, fmt.Errorf("no id found from name")
}
}