(msg netlink.Message)
| 185 | } |
| 186 | |
| 187 | func tableFromMsg(msg netlink.Message) (*Table, error) { |
| 188 | if got, want1, want2 := msg.Header.Type, newTableHeaderType, delTableHeaderType; got != want1 && got != want2 { |
| 189 | return nil, fmt.Errorf("unexpected header type: got %v, want %v or %v", got, want1, want2) |
| 190 | } |
| 191 | |
| 192 | var t Table |
| 193 | t.Family = TableFamily(msg.Data[0]) |
| 194 | |
| 195 | ad, err := netlink.NewAttributeDecoder(msg.Data[4:]) |
| 196 | if err != nil { |
| 197 | return nil, err |
| 198 | } |
| 199 | |
| 200 | for ad.Next() { |
| 201 | switch ad.Type() { |
| 202 | case unix.NFTA_TABLE_NAME: |
| 203 | t.Name = ad.String() |
| 204 | case unix.NFTA_TABLE_USE: |
| 205 | t.Use = ad.Uint32() |
| 206 | case unix.NFTA_TABLE_FLAGS: |
| 207 | t.Flags = ad.Uint32() |
| 208 | } |
| 209 | } |
| 210 | |
| 211 | return &t, nil |
| 212 | } |
no test coverage detected
searching dependent graphs…