summaryrefslogtreecommitdiffstats
path: root/lib/socket.h
diff options
context:
space:
mode:
Diffstat (limited to 'lib/socket.h')
-rw-r--r--lib/socket.h11
1 files changed, 8 insertions, 3 deletions
diff --git a/lib/socket.h b/lib/socket.h
index d3fd745..a21075e 100644
--- a/lib/socket.h
+++ b/lib/socket.h
@@ -34,8 +34,11 @@ typedef struct birdsock {
void (*err_hook)(struct birdsock *, int); /* errno or zero if EOF */
- ip_addr faddr; /* For packet protocols: source of current packet */
- unsigned fport;
+ /* Information about received datagrams (UDP, RAW), valid in rx_hook */
+ ip_addr faddr, laddr; /* src (From) and dst (Local) address of the datagram */
+ unsigned fport; /* src port of the datagram */
+ unsigned lifindex; /* local interface that received the datagram */
+ /* laddr and lifindex are valid only if SKF_LADDR_RX flag is set to request it */
int fd; /* System-dependent data */
node n;
@@ -73,7 +76,9 @@ sk_send_buffer_empty(sock *sk)
/* Socket flags */
-#define SKF_V6ONLY 1 /* Use IPV6_V6ONLY socket option */
+#define SKF_V6ONLY 1 /* Use IPV6_V6ONLY socket option */
+#define SKF_LADDR_RX 2 /* Report local address for RX packets */
+#define SKF_LADDR_TX 4 /* Allow to specify local address for TX packets */
/*