[VOL-2778] Adding pbits to DHCP packets

Change-Id: I3bfb80c566a08ec69f05f90e33b8196ad401b33d
diff --git a/internal/bbsim/packetHandlers/packet_tags.go b/internal/bbsim/packetHandlers/packet_tags.go
index e028adb..1ea7be7 100644
--- a/internal/bbsim/packetHandlers/packet_tags.go
+++ b/internal/bbsim/packetHandlers/packet_tags.go
@@ -23,7 +23,7 @@
 	"github.com/google/gopacket/layers"
 )
 
-func PushSingleTag(tag int, pkt gopacket.Packet) (gopacket.Packet, error) {
+func PushSingleTag(tag int, pkt gopacket.Packet, pbit uint8) (gopacket.Packet, error) {
 	// TODO can this method be semplified?
 	if eth := getEthernetLayer(pkt); eth != nil {
 		ethernetLayer := &layers.Ethernet{
@@ -35,6 +35,7 @@
 		dot1qLayer := &layers.Dot1Q{
 			Type:           eth.EthernetType,
 			VLANIdentifier: uint16(tag),
+			Priority:       pbit,
 		}
 
 		buffer := gopacket.NewSerializeBuffer()
@@ -58,13 +59,13 @@
 	return nil, errors.New("Couldn't extract LayerTypeEthernet from packet")
 }
 
-func PushDoubleTag(stag int, ctag int, pkt gopacket.Packet) (gopacket.Packet, error) {
+func PushDoubleTag(stag int, ctag int, pkt gopacket.Packet, pbit uint8) (gopacket.Packet, error) {
 
-	singleTaggedPkt, err := PushSingleTag(ctag, pkt)
+	singleTaggedPkt, err := PushSingleTag(ctag, pkt, pbit)
 	if err != nil {
 		return nil, err
 	}
-	doubleTaggedPkt, err := PushSingleTag(stag, singleTaggedPkt)
+	doubleTaggedPkt, err := PushSingleTag(stag, singleTaggedPkt, pbit)
 	if err != nil {
 		return nil, err
 	}
@@ -135,3 +136,11 @@
 	}
 	return dot1q.VLANIdentifier, nil
 }
+
+func GetPbit(pkt gopacket.Packet) (uint8, error) {
+	dot1q, err := getDot1QLayer(pkt)
+	if err != nil {
+		return 0, err
+	}
+	return dot1q.Priority, nil
+}