Enhancements to AT&T workflow

- Add DHCP IPV6 flow in upstream trap flow
- Add DHCP IPV6 NNI trap flow and LLDP NNI trap flow

Change-Id: Iae13aff7e5990ae3662ccea1e308b5a1efae9724
diff --git a/core/workflow_utils.go b/core/workflow_utils.go
index d4d16f9..e078e6d 100644
--- a/core/workflow_utils.go
+++ b/core/workflow_utils.go
@@ -28,15 +28,22 @@
 )
 
 const (
-	//Constants utilised while forming HSIA Flow
-	HsiaFlow                 = "HSIA_FLOW"
-
-	//Constants utilised while forming DHCP Flow
-	DhcpFlow    = "DHCP_FLOW"
-	IPv4EthType = 0x800 //2048
 	DhcpIPProto = 17
-	DhcpSrcPort = 68
-	DhcpDstPort = 67
+
+	//Constants utilised while forming HSIA Flow
+	HsiaFlow = "HSIA_FLOW"
+
+	//Constants utilised while forming DHCP IPV4 Flow
+	DhcpFlowIPV4    = "DHCP_FLOW_IPV4"
+	IPv4EthType     = 0x800 //2048
+	DhcpSrcPortIPV4 = 68
+	DhcpDstPortIPV4 = 67
+
+	//Constants utilised while forming DHCP IPV6 Flow
+	DhcpFlowIPV6    = "DHCP_FLOW_IPV6"
+	IPv6EthType     = 0x86dd //34525
+	DhcpSrcPortIPV6 = 547
+	DhcpDstPortIPV6 = 546
 
 	//Constants utilised while forming EAPOL Flow
 	EapolFlow  = "EAPOL_FLOW"
@@ -102,11 +109,19 @@
 			flowClassifier.PktTagType = SingleTag
 			actionCmd.TrapToHost = true
 			actionInfo.Cmd = &actionCmd
-		case DhcpFlow:
+		case DhcpFlowIPV4:
 			flowClassifier.EthType = IPv4EthType
 			flowClassifier.IpProto = DhcpIPProto
-			flowClassifier.SrcPort = DhcpSrcPort
-			flowClassifier.DstPort = DhcpDstPort
+			flowClassifier.SrcPort = DhcpSrcPortIPV4
+			flowClassifier.DstPort = DhcpDstPortIPV4
+			flowClassifier.PktTagType = SingleTag
+			actionCmd.TrapToHost = true
+			actionInfo.Cmd = &actionCmd
+		case DhcpFlowIPV6:
+			flowClassifier.EthType = IPv6EthType
+			flowClassifier.IpProto = DhcpIPProto
+			flowClassifier.SrcPort = DhcpSrcPortIPV6
+			flowClassifier.DstPort = DhcpDstPortIPV6
 			flowClassifier.PktTagType = SingleTag
 			actionCmd.TrapToHost = true
 			actionInfo.Cmd = &actionCmd
@@ -126,8 +141,12 @@
 			log.Errorw("Downstream EAP flows are not required instead controller "+
 				"packet outs EAP response directly to onu in downstream", log.Fields{"flowtype": flowType,
 				"direction": direction})
-		case DhcpFlow:
-			log.Errorw("Downstream DHCP flows are not required instead we have "+
+		case DhcpFlowIPV4:
+			log.Errorw("Downstream DHCPIPV4 flows are not required instead we have "+
+				"NNI trap flows already installed", log.Fields{"flowtype": flowType,
+				"direction": direction})
+		case DhcpFlowIPV6:
+			log.Errorw("Downstream DHCPIPV6 flows are not required instead we have "+
 				"NNI trap flows already installed", log.Fields{"flowtype": flowType,
 				"direction": direction})
 		case HsiaFlow: