22920349 provide support for Neighbor Discovery for IPv6 in OVS
authorakshay.kale@oracle.com <akshay.kale@oracle.com>
Thu, 09 Jun 2016 14:53:45 -0700
changeset 6160 50085258c4b0
parent 6159 7e27d23491c5
child 6161 1496c757b097
22920349 provide support for Neighbor Discovery for IPv6 in OVS
components/openvswitch/files/lib/util-solaris.c
--- a/components/openvswitch/files/lib/util-solaris.c	Thu Jun 09 14:18:41 2016 -0700
+++ b/components/openvswitch/files/lib/util-solaris.c	Thu Jun 09 14:53:45 2016 -0700
@@ -1565,6 +1565,36 @@
 				if (err != 0)
 					goto out;
 			}
+
+			flow_mac2str(f->arp_sha, m->arp_sha, buf, rbuf,
+			    sizeof (buf), sizeof (rbuf));
+			if (strlen(buf) != 0) {
+				err = dlmgr_DLValue_fm_putstring(ddvp, ddmp,
+				    "nd-sll", buf, rbuf,
+				    dstr, sizeof (dstr));
+				if (err != 0)
+					goto out;
+			}
+
+			flow_mac2str(f->arp_tha, m->arp_tha, buf, rbuf,
+			    sizeof (buf), sizeof (rbuf));
+			if (strlen(buf) != 0) {
+				err = dlmgr_DLValue_fm_putstring(ddvp, ddmp,
+				    "nd-tll", buf, rbuf,
+				    dstr, sizeof (dstr));
+				if (err != 0)
+					goto out;
+			}
+
+			flow_addr2str(&f->nd_target, &m->nd_target, 0, 0,
+			    buf, rbuf, sizeof (buf), sizeof (rbuf));
+			if (strlen(buf) != 0) {
+				err = dlmgr_DLValue_fm_putstring(ddvp, ddmp,
+				    "nd-target", buf, rbuf,
+				    dstr, sizeof (dstr));
+				if (err != 0)
+					goto out;
+			}
 		}
 	}
 
@@ -2251,9 +2281,11 @@
 		f->nw_tos = (uint8_t)*val->ddlv_ulval;
 	} else if (strcmp(key, "srcport") == 0) {
 		f->in_port.odp_port = (odp_port_t)*val->ddlv_ulval;
-	} else if (strcmp(key, "arp-target") == 0) {
+	} else if (strcmp(key, "arp-target") == 0 ||
+	    strcmp(key, "nd-tll") == 0) {
 		err = flow_str2mac(val->ddlv_sval, f->arp_tha, 6);
-	} else if (strcmp(key, "arp-sender") == 0) {
+	} else if (strcmp(key, "arp-sender") == 0 ||
+	    strcmp(key, "nd-sll") == 0) {
 		err = flow_str2mac(val->ddlv_sval, f->arp_sha, 6);
 	} else if (strcmp(key, "arp-op") == 0) {
 		f->nw_proto = (uint8_t)*val->ddlv_ulval;
@@ -2267,6 +2299,11 @@
 		f->tp_src = htons((uint16_t)*val->ddlv_ulval);
 	} else if (strcmp(key, "icmp-code") == 0) {
 		f->tp_dst = htons((uint16_t)*val->ddlv_ulval);
+	} else if (strcmp(key, "nd-target") == 0) {
+		err = flow_str2addr(val->ddlv_sval, &fa, &af);
+		if (err != 0)
+			goto out;
+		bcopy(&fa, &f->nd_target, sizeof (f->nd_target));
 	} else if (strcmp(key, "tcp-flags") == 0) {
 		f->tcp_flags = htons((uint16_t)*val->ddlv_ulval);
 	}