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:
+25
-13
@@ -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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user