770cedb83b51c6ac52c54ac67751a2f4f1a5af3c
[barrelfish] / include / devif / backends / net / udp.h
1 /*
2  * Copyright (c) 2017 ETH Zurich.
3  * All rights reserved.
4  *
5  * This file is distributed under the terms in the attached LICENSE file.
6  * If you do not find this file, copies can be found by writing to:
7  * ETH Zurich D-INFK, Universitaetstr. 6, CH-8092 Zurich. Attn: Systems Group.
8  */
9 #ifndef DEVIF_UDP_H_
10 #define DEVIF_UDP_H_ 1
11
12
13 #include <barrelfish/barrelfish.h>
14 #include <devif/backends/net/ip.h>
15
16 struct udp_q;
17
18 /**
19  *  @param q        udp queue to destroy
20  */
21 errval_t udp_destroy(struct udp_q* q);
22
23 /**
24  * @brief initalized a queue that can send UPD packets with a certain requirements.
25  *        all other packets received on this queue will be dropped.
26  *
27  * @param q            udp queue return value
28  * @param card_name    the card name from which a hardware queue will be used
29  *                      to send UPD packets. Internally a queue to the device with
30  *                      the card_name will be initalized
31  * @param src_port     UDP source port
32  * @param dst_port     UPD destination port
33  * @param dst_ip       Destination IP
34  * @param dst_mac      Destination MAC address
35  * @param interrupt    Interrupt handler
36  * @param poll         If the queue is polled or should use interrupts             
37  *
38  */
39 errval_t udp_create(struct udp_q** q, const char* card_name, 
40                     uint16_t src_port, uint16_t dst_port,
41                     uint32_t dst_ip, struct eth_addr dst_mac,
42                     void(*interrupt)(void*), bool poll);
43 /*
44  * @brief  Writes into a buffer so that we still have space to add the headers
45  *
46  * @param q           udp queue to which the region was registered to
47  * @param rid         The region ID in which the buffer to write to is contained
48  * @param offset      The offset into the region at which the buffer start
49  * @param data        The data to write into the buffer
50  * @param len         The length of the data
51  * 
52  */
53 errval_t udp_write_buffer(struct udp_q* q, regionid_t rid, genoffset_t offset,
54                           void* data, uint16_t len);
55 #endif /* DEVIF_UDP_H_ */