- int rc = ves_pnf_registration_send(current_session, nf_ip_v4_address, nf_ip_v6_address, 0, mp, tls);
- if(rc != NTS_ERR_OK) {
- log_error("could not send pnfRegistration message for IPv4=%s and IPv6=%s\n", nf_ip_v4_address, nf_ip_v6_address, port);
+ regs[total_regs].sent = false;
+ regs[total_regs].port = 0;
+ regs[total_regs].is_tls = tls;
+ total_regs++;
+ }
+
+ uint32_t remaining = total_regs;
+ while(remaining) {
+ for(int i = 0; i < total_regs; i++) {
+ if(regs[i].sent == false) {
+ uint16_t port = regs[i].port;
+ bool is_tls = regs[i].is_tls;
+ int rc = ves_pnf_registration_send(current_session, nf_ip_v4_address, nf_ip_v6_address, port, mp, is_tls);
+ if(rc == NTS_ERR_OK) {
+ remaining--;
+ regs[i].sent = true;
+ }
+ else {
+ log_error("pnfRegistration failed for ipv4=%s ipv6=%s port=%d is_tls=%d\n", nf_ip_v4_address, nf_ip_v6_address, port, is_tls);
+ }
+ }
+ }
+ if(remaining) {
+ log_error("pnfRegistration could not register all ports; retrying in 5 seconds...\n");
+ sleep(5);