(t *testing.T)
| 82 | } |
| 83 | |
| 84 | func Test_interfaceUpdateBody(t *testing.T) { |
| 85 | assert := assert.New(t) |
| 86 | |
| 87 | addSize := map[uint8]uint8{2: 39, 3: 44, 4: 50, 5: 50, 6: 54} |
| 88 | for v := MinZapiVer; v <= MaxZapiVer; v++ { |
| 89 | // decodeFromBytes |
| 90 | buf := make([]byte, interfaceNameSize+addSize[v]) |
| 91 | pos := interfaceNameSize |
| 92 | binary.BigEndian.PutUint32(buf[pos:], 1) // Index |
| 93 | pos += 4 |
| 94 | buf[pos] = byte(interfaceActive) // Status |
| 95 | pos++ |
| 96 | binary.BigEndian.PutUint64(buf[pos:], 1) |
| 97 | pos += 8 // flags |
| 98 | if v > 3 { |
| 99 | buf[pos] = byte(ptmEnableOff) // ptm enable |
| 100 | pos++ |
| 101 | buf[pos] = byte(ptmStatusUnknown) // ptm status |
| 102 | pos++ |
| 103 | } |
| 104 | binary.BigEndian.PutUint32(buf[pos:], 1) |
| 105 | pos += 4 // metric |
| 106 | if v > 3 { |
| 107 | binary.BigEndian.PutUint32(buf[pos:], 10000) |
| 108 | pos += 4 // speed |
| 109 | } |
| 110 | binary.BigEndian.PutUint32(buf[pos:], 1500) |
| 111 | pos += 4 // MTU |
| 112 | binary.BigEndian.PutUint32(buf[pos:], 1500) |
| 113 | pos += 4 // MTU6 |
| 114 | binary.BigEndian.PutUint32(buf[pos:], 200) |
| 115 | pos += 4 // bandwidth |
| 116 | if v == 6 { // "frr7.2", "" |
| 117 | binary.BigEndian.PutUint32(buf[pos:], 1) |
| 118 | pos += 4 // link Ifindex |
| 119 | } |
| 120 | if v > 2 { |
| 121 | binary.BigEndian.PutUint32(buf[pos:], uint32(linkTypeEther)) |
| 122 | pos += 4 // Linktype |
| 123 | } |
| 124 | binary.BigEndian.PutUint32(buf[pos:], 6) |
| 125 | pos += 4 // hwaddr_len |
| 126 | mac, _ := net.ParseMAC("01:23:45:67:89:ab") |
| 127 | copy(buf[pos:pos+6], []byte(mac)) |
| 128 | pos += 6 |
| 129 | if v > 2 { |
| 130 | buf[pos] = byte(0) // link param |
| 131 | // pos++ |
| 132 | } |
| 133 | b := &interfaceUpdateBody{} |
| 134 | software := NewSoftware(v, "") |
| 135 | err := b.decodeFromBytes(buf, v, software) |
| 136 | assert.NoError(err) |
| 137 | assert.Equal("01:23:45:67:89:ab", b.hardwareAddr.String()) |
| 138 | buf = make([]byte, interfaceNameSize+32) // size mismatch |
| 139 | b = &interfaceUpdateBody{} |
| 140 | err = b.decodeFromBytes(buf, v, software) |
| 141 | assert.NotNil(err) |
nothing calls this directly
no test coverage detected
searching dependent graphs…