Make sure PriorityInheritance also works in switch mode.
authorGuus Sliepen <guus@tinc-vpn.org>
Sun, 20 Jan 2013 14:16:13 +0000 (15:16 +0100)
committerGuus Sliepen <guus@tinc-vpn.org>
Sun, 20 Jan 2013 14:16:13 +0000 (15:16 +0100)
src/route.c

index 13f8157..4ae56a5 100644 (file)
@@ -836,6 +836,11 @@ static void route_mac(node_t *source, vpn_packet_t *packet) {
        if(forwarding_mode == FMODE_OFF && source != myself && subnet->owner != myself)
                return;
 
+       uint16_t type = packet->data[12] << 8 | packet->data[13];
+
+       if(priorityinheritance && type == ETH_P_IP && packet->len >= ether_size + ip_size)
+               packet->priority = packet->data[15];
+
        // Handle packets larger than PMTU
 
        node_t *via = (subnet->owner->via == myself) ? subnet->owner->nexthop : subnet->owner->via;
@@ -845,7 +850,6 @@ static void route_mac(node_t *source, vpn_packet_t *packet) {
        
        if(via && packet->len > via->mtu && via != myself) {
                ifdebug(TRAFFIC) logger(LOG_INFO, "Packet for %s (%s) length %d larger than MTU %d", subnet->owner->name, subnet->owner->hostname, packet->len, via->mtu);
-               uint16_t type = packet->data[12] << 8 | packet->data[13];
                length_t ethlen = 14;
 
                if(type == ETH_P_8021Q) {