Fix BDT-1 port override (#252)

* Fix BDT-1 port override

* fix BIP NAT port number

Co-authored-by: Steve Karg <skarg@users.sourceforge.net>
This commit is contained in:
Steve Karg
2022-04-17 00:11:02 -05:00
committed by GitHub
parent c9d42d268e
commit 2e3ce60751
+25 -13
View File
@@ -180,7 +180,8 @@ int dlenv_register_as_foreign_device(void)
bip_get_addr_by_name(pEnv, &BBMD_Table_Entry.dest_address); bip_get_addr_by_name(pEnv, &BBMD_Table_Entry.dest_address);
if (entry_number == 1) { if (entry_number == 1) {
if (BIP_DL_Debug) { if (BIP_DL_Debug) {
fprintf(stderr, "BBMD 1 is %s=%s!\n", bbmd_env, pEnv); fprintf(stderr, "BBMD 1 address overridden %s=%s!\n",
bbmd_env, pEnv);
} }
} }
} else if (entry_number == 1) { } else if (entry_number == 1) {
@@ -188,19 +189,25 @@ int dlenv_register_as_foreign_device(void)
bdt_entry_valid = bip_get_addr(&BBMD_Table_Entry.dest_address); bdt_entry_valid = bip_get_addr(&BBMD_Table_Entry.dest_address);
} }
if (bdt_entry_valid) { if (bdt_entry_valid) {
if (entry_number != 1) { bdt_entry_port = 0xBAC0;
bdt_entry_port = 0xBAC0; sprintf(bbmd_env, "BACNET_BDT_PORT_%u", entry_number);
sprintf(bbmd_env, "BACNET_BDT_PORT_%u", entry_number); pEnv = getenv(bbmd_env);
pEnv = getenv(bbmd_env); if (pEnv) {
if (pEnv) { bdt_entry_port = strtol(pEnv, NULL, 0);
bdt_entry_port = strtol(pEnv, NULL, 0); if (bdt_entry_port > 0xFFFF) {
if (bdt_entry_port > 0xFFFF) { bdt_entry_port = 0xBAC0;
bdt_entry_port = 0xBAC0;
}
/* BDT 1 is self (note: can be overridden) */
} }
BBMD_Table_Entry.dest_address.port = bdt_entry_port; if (entry_number == 1) {
if (BIP_DL_Debug) {
fprintf(stderr, "BBMD 1 port overridden %s=%s!\n",
bbmd_env, pEnv);
}
}
} else if (entry_number == 1) {
/* BDT 1 is self (note: can be overridden) */
bdt_entry_port = bip_get_port();
} }
BBMD_Table_Entry.dest_address.port = bdt_entry_port;
/* broadcast mask */ /* broadcast mask */
bvlc_broadcast_distribution_mask_from_host( bvlc_broadcast_distribution_mask_from_host(
&BBMD_Table_Entry.broadcast_mask, 0xFFFFFFFF); &BBMD_Table_Entry.broadcast_mask, 0xFFFFFFFF);
@@ -454,6 +461,7 @@ void dlenv_init(void)
} }
#endif #endif
#if defined(BACDL_BIP) #if defined(BACDL_BIP)
BACNET_IP_ADDRESS addr;
pEnv = getenv("BACNET_IP_DEBUG"); pEnv = getenv("BACNET_IP_DEBUG");
if (pEnv) { if (pEnv) {
bip_debug_enable(); bip_debug_enable();
@@ -476,8 +484,12 @@ void dlenv_init(void)
} }
pEnv = getenv("BACNET_IP_NAT_ADDR"); pEnv = getenv("BACNET_IP_NAT_ADDR");
if (pEnv) { if (pEnv) {
BACNET_IP_ADDRESS addr;
if (bip_get_addr_by_name(pEnv, &addr)) { if (bip_get_addr_by_name(pEnv, &addr)) {
addr.port = 0xBAC0;
pEnv = getenv("BACNET_IP_NAT_PORT");
if (pEnv) {
addr.port = strtol(pEnv, NULL, 0);
}
bvlc_set_global_address_for_nat(&addr); bvlc_set_global_address_for_nat(&addr);
} }
} }