sending/receiving IPv6 on RIOT

Hi, I have a few questions regarding sending/receiving IP packets:

First, I've gathered that I have to register a packet handler thread with ipv6_register_packet_handler() that will block on msg_receive(&m) until a packet is received. I assume m.ptr will point to the new IP packet, but what happens if another packet arrives? Will it be overwritten or dropped? If the latter, how do I tell RIOT I'm done processing the current packet and it can receive a new one?

When sending packets to broadcast (every node receiving the packet should process it), can I somehow leave out the destination address to save space? Also, the packets do contain IP addresses of nodes in the MANET, is there some way to transmit them in a compressed (6LoWPAN?) way, so they don't take up all available space in the packet? It would be handy to store them in a more compact fashion too, in order to save memory.

If I understood correctly, if a node receives an IP packet with destination other than it's own address, it will be dropped. Now since I'm implementing a routing protocol (olsr2), nodes will receive (payload) packets with a dest IP other than their own, but if the mac layer destination address matches (and they know the route to dest IP), it will be forwarded. What would be the best way to hook this up in RIOT, also in regards of possible other routing protocols?

Thank you Benjamin