Lines Matching defs:packet

347 flow_divert_packet_init(struct flow_divert_pcb *fd_cb, uint8_t packet_type, mbuf_t *packet)
352 error = mbuf_gethdr(MBUF_DONTWAIT, MBUF_TYPE_HEADER, packet);
362 error = mbuf_copyback(*packet, 0, sizeof(hdr), &hdr, MBUF_DONTWAIT);
365 mbuf_freem(*packet);
366 *packet = NULL;
374 flow_divert_packet_append_tlv(mbuf_t packet, uint8_t type, size_t length, const void *value)
379 error = mbuf_copyback(packet, mbuf_pkthdr_len(packet), sizeof(type), &type, MBUF_DONTWAIT);
385 error = mbuf_copyback(packet, mbuf_pkthdr_len(packet), sizeof(net_length), &net_length, MBUF_DONTWAIT);
391 error = mbuf_copyback(packet, mbuf_pkthdr_len(packet), length, value, MBUF_DONTWAIT);
401 flow_divert_packet_find_tlv(mbuf_t packet, int offset, uint8_t type, int *err, int next)
412 error = mbuf_copydata(packet, cursor, sizeof(curr_type), &curr_type);
424 error = mbuf_copydata(packet, cursor, sizeof(curr_length), &curr_length);
438 flow_divert_packet_get_tlv(mbuf_t packet, int offset, uint8_t type, size_t buff_len, void *buff, size_t *val_size)
444 tlv_offset = flow_divert_packet_find_tlv(packet, offset, type, &error, 0);
449 error = mbuf_copydata(packet, tlv_offset + sizeof(type), sizeof(length), &length);
462 error = mbuf_copydata(packet, tlv_offset + sizeof(type) + sizeof(length), to_copy, buff);
472 flow_divert_packet_compute_hmac(mbuf_t packet, struct flow_divert_group *group, uint8_t *hmac)
474 mbuf_t curr_mbuf = packet;
494 flow_divert_packet_verify_hmac(mbuf_t packet, uint32_t ctl_unit)
521 hmac_offset = flow_divert_packet_find_tlv(packet, 0, FLOW_DIVERT_TLV_HMAC, &error, 0);
526 error = flow_divert_packet_get_tlv(packet, hmac_offset, FLOW_DIVERT_TLV_HMAC, sizeof(packet_hmac), packet_hmac, NULL);
532 error = mbuf_split(packet, hmac_offset, MBUF_WAITOK, &tail);
539 error = flow_divert_packet_compute_hmac(packet, group, computed_hmac);
829 flow_divert_send_packet(struct flow_divert_pcb *fd_cb, mbuf_t packet, Boolean enqueue)
842 error = ctl_enqueuembuf(g_flow_divert_kctl_ref, fd_cb->group->ctl_unit, packet, CTL_DATA_EOR);
852 MBUFQ_ENQUEUE(&fd_cb->group->send_queue, packet);
992 mbuf_t packet = NULL;
995 error = flow_divert_packet_init(fd_cb, FLOW_DIVERT_PKT_CONNECT_RESULT, &packet);
997 FDLOG(LOG_ERR, fd_cb, "failed to create a connect result packet: %d", error);
1006 error = flow_divert_packet_append_tlv(packet,
1014 error = flow_divert_send_packet(fd_cb, packet, TRUE);
1020 if (error && packet != NULL) {
1021 mbuf_free(packet);
1031 mbuf_t packet = NULL;
1034 error = flow_divert_packet_init(fd_cb, FLOW_DIVERT_PKT_CLOSE, &packet);
1036 FDLOG(LOG_ERR, fd_cb, "failed to create a close packet: %d", error);
1040 error = flow_divert_packet_append_tlv(packet, FLOW_DIVERT_TLV_ERROR_CODE, sizeof(zero), &zero);
1047 error = flow_divert_packet_append_tlv(packet, FLOW_DIVERT_TLV_HOW, sizeof(how), &how);
1053 error = flow_divert_send_packet(fd_cb, packet, TRUE);
1059 if (error && packet != NULL) {
1060 mbuf_free(packet);
1110 /* Successfully sent the close packet. Record the ways in which the tunnel has been closed */
1128 mbuf_t packet;
1132 error = flow_divert_packet_init(fd_cb, FLOW_DIVERT_PKT_DATA, &packet);
1138 last = m_last(packet);
1140 mbuf_pkthdr_adjustlen(packet, data_len);
1142 error = flow_divert_send_packet(fd_cb, packet, force);
1146 mbuf_free(packet);
1290 mbuf_t packet = NULL;
1293 error = flow_divert_packet_init(fd_cb, FLOW_DIVERT_PKT_READ_NOTIFY, &packet);
1295 FDLOG(LOG_ERR, fd_cb, "failed to create a read notification packet: %d", error);
1299 error = flow_divert_packet_append_tlv(packet, FLOW_DIVERT_TLV_READ_COUNT, sizeof(net_read_count), &net_read_count);
1305 error = flow_divert_send_packet(fd_cb, packet, TRUE);
1311 if (error && packet != NULL) {
1312 mbuf_free(packet);
1322 mbuf_t packet = NULL;
1324 error = flow_divert_packet_init(fd_cb, FLOW_DIVERT_PKT_PROPERTIES_UPDATE, &packet);
1326 FDLOG(LOG_ERR, fd_cb, "failed to create a properties update packet: %d", error);
1330 error = flow_divert_packet_append_tlv(packet, FLOW_DIVERT_TLV_TRAFFIC_CLASS, sizeof(traffic_class), &traffic_class);
1336 error = flow_divert_send_packet(fd_cb, packet, TRUE);
1342 if (error && packet != NULL) {
1343 mbuf_free(packet);
1350 flow_divert_handle_connect_result(struct flow_divert_pcb *fd_cb, mbuf_t packet, int offset)
1364 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_ERROR_CODE, sizeof(connect_error), &connect_error, NULL);
1372 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_SPACE_AVAILABLE, sizeof(send_window), &send_window, NULL);
1378 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_CTL_UNIT, sizeof(ctl_unit), &ctl_unit, NULL);
1384 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_LOCAL_ADDR, sizeof(local_address), &local_address, NULL);
1389 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_REMOTE_ADDR, sizeof(remote_address), &remote_address, NULL);
1394 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_OUT_IF_INDEX, sizeof(out_if_index), &out_if_index, NULL);
1525 flow_divert_handle_close(struct flow_divert_pcb *fd_cb, mbuf_t packet, int offset)
1531 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_ERROR_CODE, sizeof(close_error), &close_error, NULL);
1537 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_HOW, sizeof(how), &how, NULL);
1570 flow_divert_handle_data(struct flow_divert_pcb *fd_cb, mbuf_t packet, size_t offset)
1576 data_size = (mbuf_pkthdr_len(packet) - offset);
1580 error = mbuf_split(packet, offset, MBUF_DONTWAIT, &data);
1614 flow_divert_handle_read_notification(struct flow_divert_pcb *fd_cb, mbuf_t packet, int offset)
1619 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_READ_COUNT, sizeof(read_count), &read_count, NULL);
1638 flow_divert_handle_group_init(struct flow_divert_group *group, mbuf_t packet, int offset)
1644 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_TOKEN_KEY, 0, NULL, &key_size);
1655 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_LOG_LEVEL, sizeof(log_level), &log_level, NULL);
1663 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_TOKEN_KEY, key_size, group->token_key, NULL);
1678 flow_divert_handle_properties_update(struct flow_divert_pcb *fd_cb, mbuf_t packet, int offset)
1690 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_LOCAL_ADDR, sizeof(local_address), &local_address, NULL);
1695 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_REMOTE_ADDR, sizeof(remote_address), &remote_address, NULL);
1700 error = flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_OUT_IF_INDEX, sizeof(out_if_index), &out_if_index, NULL);
1744 flow_divert_handle_app_map_create(mbuf_t packet, int offset)
1768 flow_divert_packet_get_tlv(packet, offset, FLOW_DIVERT_TLV_PREFIX_COUNT, sizeof(prefix_count), &prefix_count, NULL);
1771 for (cursor = flow_divert_packet_find_tlv(packet, offset, FLOW_DIVERT_TLV_SIGNING_ID, &error, 0);
1773 cursor = flow_divert_packet_find_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, &error, 1))
1776 flow_divert_packet_get_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, 0, NULL, &sid_size);
1819 for (cursor = flow_divert_packet_find_tlv(packet, offset, FLOW_DIVERT_TLV_SIGNING_ID, &error, 0);
1821 cursor = flow_divert_packet_find_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, &error, 1))
1824 flow_divert_packet_get_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, 0, NULL, &sid_size);
1828 flow_divert_packet_get_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, sid_size, &TRIE_BYTE(&new_trie, new_trie.bytes_free_next), NULL);
1860 flow_divert_handle_app_map_update(struct flow_divert_group *group, mbuf_t packet, int offset)
1872 for (cursor = flow_divert_packet_find_tlv(packet, offset, FLOW_DIVERT_TLV_SIGNING_ID, &error, 0);
1874 cursor = flow_divert_packet_find_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, &error, 1))
1877 flow_divert_packet_get_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, 0, NULL, &sid_size);
1889 for (cursor = flow_divert_packet_find_tlv(packet, offset, FLOW_DIVERT_TLV_SIGNING_ID, &error, 0);
1891 cursor = flow_divert_packet_find_tlv(packet, cursor, FLOW_DIVERT_TLV_SIGNING_ID, &error, 1))
1896 flow_divert_packet_get_tlv(packet,
1920 flow_divert_input(mbuf_t packet, struct flow_divert_group *group)
1926 if (mbuf_pkthdr_len(packet) < sizeof(hdr)) {
1927 FDLOG(LOG_ERR, &nil_pcb, "got a bad packet, length (%lu) < sizeof hdr (%lu)", mbuf_pkthdr_len(packet), sizeof(hdr));
1932 error = mbuf_copydata(packet, 0, sizeof(hdr), &hdr);
1944 flow_divert_handle_group_init(group, packet, sizeof(hdr));
1947 flow_divert_handle_app_map_create(packet, sizeof(hdr));
1950 flow_divert_handle_app_map_update(group, packet, sizeof(hdr));
1969 flow_divert_handle_connect_result(fd_cb, packet, sizeof(hdr));
1972 flow_divert_handle_close(fd_cb, packet, sizeof(hdr));
1975 flow_divert_handle_data(fd_cb, packet, sizeof(hdr));
1978 flow_divert_handle_read_notification(fd_cb, packet, sizeof(hdr));
1981 flow_divert_handle_properties_update(fd_cb, packet, sizeof(hdr));
1991 mbuf_free(packet);