aboutsummaryrefslogtreecommitdiff
path: root/eth-multiplexer/vdev.c
diff options
context:
space:
mode:
Diffstat (limited to 'eth-multiplexer/vdev.c')
-rw-r--r--eth-multiplexer/vdev.c35
1 files changed, 15 insertions, 20 deletions
diff --git a/eth-multiplexer/vdev.c b/eth-multiplexer/vdev.c
index 7d5390b2..367623d9 100644
--- a/eth-multiplexer/vdev.c
+++ b/eth-multiplexer/vdev.c
@@ -193,29 +193,13 @@ destroy_vdev (void *port)
destroy_filters (&vdev->port_list);
}
+static int deliver_msg (struct net_rcv_msg *msg, struct vether_device *vdev);
+
/* Broadcast the packet to all virtual interfaces
* except the one the packet is from */
int
broadcast_pack (char *data, int datalen, struct vether_device *from_vdev)
{
- int internal_deliver_pack (struct vether_device *vdev)
- {
- /* Skip current interface. */
- if (from_vdev == vdev)
- return 0;
- /* Skip interfaces that are down. */
- if ((vdev->if_flags & IFF_UP) == 0)
- return 0;
- return deliver_pack (data, datalen, vdev);
- }
-
- return foreach_dev_do (internal_deliver_pack);
-}
-
-/* Create a message, and deliver it. */
-int
-deliver_pack (char *data, int datalen, struct vether_device *vdev)
-{
struct net_rcv_msg msg;
int pack_size;
struct ethhdr *header;
@@ -236,7 +220,18 @@ deliver_pack (char *data, int datalen, struct vether_device *vdev)
packet->length = pack_size + sizeof (struct packet_header);
msg.packet_type.msgt_number = packet->length;
- return deliver_msg (&msg, vdev);
+ int internal_deliver_pack (struct vether_device *vdev)
+ {
+ /* Skip current interface. */
+ if (from_vdev == vdev)
+ return 0;
+ /* Skip interfaces that are down. */
+ if ((vdev->if_flags & IFF_UP) == 0)
+ return 0;
+ return deliver_msg (&msg, vdev);
+ }
+
+ return foreach_dev_do (internal_deliver_pack);
}
/* Broadcast the message to all virtual interfaces. */
@@ -265,7 +260,7 @@ broadcast_msg (struct net_rcv_msg *msg)
* Deliver the message to all right pfinet servers that
* connects to the virtual network interface.
*/
-int
+static int
deliver_msg(struct net_rcv_msg *msg, struct vether_device *vdev)
{
mach_msg_return_t err;