#include #include #include #include #include void send_udp_packet(struct sockaddr_in *src, const struct sockaddr_in *dst, const u8 *payload, u16 payload_length) { u16 header[4] = {0}; header[0] = src->sin_port; header[1] = dst->sin_port; header[2] = htons(payload_length + 8); u16 packet_length = sizeof(header) + payload_length; u8 *packet = kmalloc(packet_length); memcpy(packet, header, sizeof(header)); memcpy(packet + sizeof(header), payload, payload_length); send_ipv4_packet(dst->sin_addr.s_addr, 0x11, packet, packet_length); kfree(packet); } void handle_udp(u8 src_ip[4], const u8 *payload, u32 packet_length) { // TODO: Reimplement assert(NULL); }