+ lentry = &p_nd_route_data[port_id]->nd_route_table[i];
+
+ memset(netmask_ipv6, 0, sizeof(netmask_ipv6));
+ memset(netip_nd, 0, sizeof(netip_nd));
+ memset(netip_in, 0, sizeof(netip_in));
+
+ /* Create netmask from depth */
+ convert_prefixlen_to_netmask_ipv6(lentry->depth, netmask_ipv6);
+
+ for (k = 0; k < 16; k++) {
+ if (lentry->nhipv6[k] & netmask_ipv6[k]) {
+ depthflags++;
+ netip_nd[k] = lentry->nhipv6[k];
+ }
+
+ if (ipv6[k] & netmask_ipv6[k]) {
+ depthflags1++;
+ netip_in[k] = ipv6[k];
+ }
+ }
+
+ if ((depthflags == depthflags1)
+ && (memcmp(netip_nd, netip_in, sizeof(netip_nd)) == 0)) {
+ /* Route already exists */
+ printf("Route already exists \n");
+ return 1;
+ }
+ }
+
+ if(i < MAX_ND_ROUTE_ENTRY_SIZE) {
+
+ lentry = &p_nd_route_data[port_id]->nd_route_table[i];
+
+ rte_mov16(lentry->nhipv6, ipv6);
+
+ lentry->depth = depth;
+ lentry->port = port_id;
+ p_nd_route_data[port_id]->nd_route_ent_cnt++;
+ /* Set the VNF Gateway flag */
+ vnf_gateway = 1;
+
+ return 0;
+ } else {
+
+ printf("Error: Number of entries more than supported\n");
+ return 1;
+ }