Lines Matching refs:out
228 int icmp_to_icmp6(clat_packet out, clat_packet_index pos, const struct icmphdr *icmp, in icmp_to_icmp6() argument
230 struct icmp6_hdr *icmp6_targ = out[pos].iov_base; in icmp_to_icmp6()
240 out[pos].iov_len = sizeof(struct icmp6_hdr); in icmp_to_icmp6()
245 clat_packet_len = ipv4_packet(out, pos + 1, payload, payload_size); in icmp_to_icmp6()
258 out[CLAT_POS_PAYLOAD].iov_base = (uint8_t *)payload; in icmp_to_icmp6()
259 out[CLAT_POS_PAYLOAD].iov_len = payload_size; in icmp_to_icmp6()
267 icmp6_targ->icmp6_cksum = packet_checksum(checksum, out, pos); in icmp_to_icmp6()
280 int icmp6_to_icmp(clat_packet out, clat_packet_index pos, const struct icmp6_hdr *icmp6, in icmp6_to_icmp() argument
282 struct icmphdr *icmp_targ = out[pos].iov_base; in icmp6_to_icmp()
292 out[pos].iov_len = sizeof(struct icmphdr); in icmp6_to_icmp()
298 clat_packet_len = ipv6_packet(out, pos + 1, payload, payload_size); in icmp6_to_icmp()
303 out[CLAT_POS_PAYLOAD].iov_base = (uint8_t *)payload; in icmp6_to_icmp()
304 out[CLAT_POS_PAYLOAD].iov_len = payload_size; in icmp6_to_icmp()
312 icmp_targ->checksum = packet_checksum(0, out, pos); in icmp6_to_icmp()
325 int generic_packet(clat_packet out, clat_packet_index pos, const uint8_t *payload, size_t len) { in generic_packet() argument
326 out[pos].iov_len = 0; in generic_packet()
327 out[CLAT_POS_PAYLOAD].iov_base = (uint8_t *)payload; in generic_packet()
328 out[CLAT_POS_PAYLOAD].iov_len = len; in generic_packet()
341 int udp_packet(clat_packet out, clat_packet_index pos, const struct udphdr *udp, uint32_t old_sum, in udp_packet() argument
354 return udp_translate(out, pos, udp, old_sum, new_sum, payload, payload_size); in udp_packet()
365 int tcp_packet(clat_packet out, clat_packet_index pos, const struct tcphdr *tcp, uint32_t old_sum, in tcp_packet() argument
389 return tcp_translate(out, pos, tcp, header_size, old_sum, new_sum, payload, payload_size); in tcp_packet()
402 int udp_translate(clat_packet out, clat_packet_index pos, const struct udphdr *udp, in udp_translate() argument
404 struct udphdr *udp_targ = out[pos].iov_base; in udp_translate()
408 out[pos].iov_len = sizeof(struct udphdr); in udp_translate()
409 out[CLAT_POS_PAYLOAD].iov_base = (uint8_t *)payload; in udp_translate()
410 out[CLAT_POS_PAYLOAD].iov_len = payload_size; in udp_translate()
420 udp_targ->check = packet_checksum(new_sum, out, pos); in udp_translate()
442 int tcp_translate(clat_packet out, clat_packet_index pos, const struct tcphdr *tcp, in tcp_translate() argument
445 struct tcphdr *tcp_targ = out[pos].iov_base; in tcp_translate()
446 out[pos].iov_len = header_size; in tcp_translate()
458 out[CLAT_POS_PAYLOAD].iov_base = (uint8_t *)payload; in tcp_translate()
459 out[CLAT_POS_PAYLOAD].iov_len = payload_size; in tcp_translate()
467 void send_rawv6(int fd, clat_packet out, int iov_len) __attribute__((weak));
469 void send_rawv6(int fd, clat_packet out, int iov_len) { in send_rawv6() argument
480 msg.msg_iov = out, msg.msg_iovlen = iov_len, in send_rawv6()
481 sin6.sin6_addr = ((struct ip6_hdr *)out[CLAT_POS_IPHDR].iov_base)->ip6_dst; in send_rawv6()
505 clat_packet out = { in translate_packet() local
517 iov_len = ipv4_packet(out, CLAT_POS_IPHDR, packet, packetsize); in translate_packet()
519 send_rawv6(fd, out, iov_len); in translate_packet()
522 iov_len = ipv6_packet(out, CLAT_POS_IPHDR, packet, packetsize); in translate_packet()
525 out[CLAT_POS_TUNHDR].iov_len = sizeof(tun_targ); in translate_packet()
526 writev(fd, out, iov_len); in translate_packet()