* test data manipulation in mbuf */
| 164 | * test data manipulation in mbuf |
| 165 | */ |
| 166 | static int |
| 167 | test_one_pktmbuf(struct rte_mempool *pktmbuf_pool) |
| 168 | { |
| 169 | struct rte_mbuf *m = NULL; |
| 170 | char *data, *data2, *hdr; |
| 171 | unsigned i; |
| 172 | |
| 173 | printf("Test pktmbuf API\n"); |
| 174 | |
| 175 | /* alloc a mbuf */ |
| 176 | |
| 177 | m = rte_pktmbuf_alloc(pktmbuf_pool); |
| 178 | if (m == NULL) |
| 179 | GOTO_FAIL("Cannot allocate mbuf"); |
| 180 | if (rte_pktmbuf_pkt_len(m) != 0) |
| 181 | GOTO_FAIL("Bad length"); |
| 182 | |
| 183 | rte_pktmbuf_dump(stdout, m, 0); |
| 184 | |
| 185 | /* append data */ |
| 186 | |
| 187 | data = rte_pktmbuf_append(m, MBUF_TEST_DATA_LEN); |
| 188 | if (data == NULL) |
| 189 | GOTO_FAIL("Cannot append data"); |
| 190 | if (rte_pktmbuf_pkt_len(m) != MBUF_TEST_DATA_LEN) |
| 191 | GOTO_FAIL("Bad pkt length"); |
| 192 | if (rte_pktmbuf_data_len(m) != MBUF_TEST_DATA_LEN) |
| 193 | GOTO_FAIL("Bad data length"); |
| 194 | memset(data, 0x66, rte_pktmbuf_pkt_len(m)); |
| 195 | if (!rte_pktmbuf_is_contiguous(m)) |
| 196 | GOTO_FAIL("Buffer should be continuous"); |
| 197 | rte_pktmbuf_dump(stdout, m, MBUF_TEST_DATA_LEN); |
| 198 | rte_pktmbuf_dump(stdout, m, 2*MBUF_TEST_DATA_LEN); |
| 199 | |
| 200 | /* this append should fail */ |
| 201 | |
| 202 | data2 = rte_pktmbuf_append(m, (uint16_t)(rte_pktmbuf_tailroom(m) + 1)); |
| 203 | if (data2 != NULL) |
| 204 | GOTO_FAIL("Append should not succeed"); |
| 205 | |
| 206 | /* append some more data */ |
| 207 | |
| 208 | data2 = rte_pktmbuf_append(m, MBUF_TEST_DATA_LEN2); |
| 209 | if (data2 == NULL) |
| 210 | GOTO_FAIL("Cannot append data"); |
| 211 | if (rte_pktmbuf_pkt_len(m) != MBUF_TEST_DATA_LEN + MBUF_TEST_DATA_LEN2) |
| 212 | GOTO_FAIL("Bad pkt length"); |
| 213 | if (rte_pktmbuf_data_len(m) != MBUF_TEST_DATA_LEN + MBUF_TEST_DATA_LEN2) |
| 214 | GOTO_FAIL("Bad data length"); |
| 215 | if (!rte_pktmbuf_is_contiguous(m)) |
| 216 | GOTO_FAIL("Buffer should be continuous"); |
| 217 | |
| 218 | /* trim data at the end of mbuf */ |
| 219 | |
| 220 | if (rte_pktmbuf_trim(m, MBUF_TEST_DATA_LEN2) < 0) |
| 221 | GOTO_FAIL("Cannot trim data"); |
| 222 | if (rte_pktmbuf_pkt_len(m) != MBUF_TEST_DATA_LEN) |
| 223 | GOTO_FAIL("Bad pkt length"); |
no test coverage detected