MCPcopy Create free account
hub / github.com/F-Stack/f-stack / sctp_expand_mapping_array

Function sctp_expand_mapping_array

freebsd/netinet/sctputil.c:1408–1439  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1406}
1407
1408int
1409sctp_expand_mapping_array(struct sctp_association *asoc, uint32_t needed)
1410{
1411 /* mapping array needs to grow */
1412 uint8_t *new_array1, *new_array2;
1413 uint32_t new_size;
1414
1415 new_size = asoc->mapping_array_size + ((needed + 7) / 8 + SCTP_MAPPING_ARRAY_INCR);
1416 SCTP_MALLOC(new_array1, uint8_t *, new_size, SCTP_M_MAP);
1417 SCTP_MALLOC(new_array2, uint8_t *, new_size, SCTP_M_MAP);
1418 if ((new_array1 == NULL) || (new_array2 == NULL)) {
1419 /* can't get more, forget it */
1420 SCTP_PRINTF("No memory for expansion of SCTP mapping array %d\n", new_size);
1421 if (new_array1) {
1422 SCTP_FREE(new_array1, SCTP_M_MAP);
1423 }
1424 if (new_array2) {
1425 SCTP_FREE(new_array2, SCTP_M_MAP);
1426 }
1427 return (-1);
1428 }
1429 memset(new_array1, 0, new_size);
1430 memset(new_array2, 0, new_size);
1431 memcpy(new_array1, asoc->mapping_array, asoc->mapping_array_size);
1432 memcpy(new_array2, asoc->nr_mapping_array, asoc->mapping_array_size);
1433 SCTP_FREE(asoc->mapping_array, SCTP_M_MAP);
1434 SCTP_FREE(asoc->nr_mapping_array, SCTP_M_MAP);
1435 asoc->mapping_array = new_array1;
1436 asoc->nr_mapping_array = new_array2;
1437 asoc->mapping_array_size = new_size;
1438 return (0);
1439}
1440
1441static void
1442sctp_iterator_work(struct sctp_iterator *it)

Callers 1

Calls 2

memsetFunction · 0.85
memcpyFunction · 0.50

Tested by

no test coverage detected