Parses a ConntrackStatEntry from given array of fields.
(fields []string)
| 84 | |
| 85 | // Parses a ConntrackStatEntry from given array of fields. |
| 86 | func parseConntrackStatEntry(fields []string) (*ConntrackStatEntry, error) { |
| 87 | entries, err := parsers.ParseHexUint64s(fields) |
| 88 | if err != nil { |
| 89 | return nil, fmt.Errorf("%w: Cannot parse entry: %d: %w", ErrFileParse, entries, err) |
| 90 | } |
| 91 | numEntries := len(entries) |
| 92 | if numEntries < 16 || numEntries > 17 { |
| 93 | return nil, |
| 94 | fmt.Errorf("%w: invalid conntrackstat entry, invalid number of fields: %d", ErrFileParse, numEntries) |
| 95 | } |
| 96 | |
| 97 | stats := &ConntrackStatEntry{ |
| 98 | Entries: *entries[0], |
| 99 | Searched: *entries[1], |
| 100 | Found: *entries[2], |
| 101 | New: *entries[3], |
| 102 | Invalid: *entries[4], |
| 103 | Ignore: *entries[5], |
| 104 | Delete: *entries[6], |
| 105 | DeleteList: *entries[7], |
| 106 | Insert: *entries[8], |
| 107 | InsertFailed: *entries[9], |
| 108 | Drop: *entries[10], |
| 109 | EarlyDrop: *entries[11], |
| 110 | } |
| 111 | |
| 112 | // Ignore missing search_restart on Linux < 2.6.35. |
| 113 | if numEntries == 17 { |
| 114 | stats.SearchRestart = *entries[16] |
| 115 | } |
| 116 | |
| 117 | return stats, nil |
| 118 | } |
no test coverage detected