devif: added dst MAC lookup to UDP queue init
[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 interrupt    Interrupt handler
35  * @param poll         If the queue is polled or should use interrupts             
36  *
37  */
38 errval_t udp_create(struct udp_q** q, const char* card_name, 
39                     uint16_t src_port, uint16_t dst_port,
40                     uint32_t dst_ip, void(*interrupt)(void*), 
41                     bool poll);
42 /*
43  * @brief  Writes into a buffer so that we still have space to add the headers
44  *
45  * @param q           udp queue to which the region was registered to
46  * @param rid         The region ID in which the buffer to write to is contained
47  * @param offset      The offset into the region at which the buffer start
48  * @param data        The data to write into the buffer
49  * @param len         The length of the data
50  * 
51  */
52 errval_t udp_write_buffer(struct udp_q* q, regionid_t rid, genoffset_t offset,
53                           void* data, uint16_t len);
54 #endif /* DEVIF_UDP_H_ */