diff --git a/src/db/dbAccess.c b/src/db/dbAccess.c index 14e42d1c5..6805b346e 100644 --- a/src/db/dbAccess.c +++ b/src/db/dbAccess.c @@ -463,6 +463,25 @@ long dbScanLink(dbCommon *pfrom, dbCommon *pto) pfrom->pact = pact; return(status); } + +void dbScanFwdLink(dbCommon *precord, struct link *plink) +{ + struct pv_link *pvlink; + short fwdLinkValue; + + if(plink->type==CONSTANT) return; + if(plink->type==DB_LINK) { + DBADDR *paddr = (DBADDR *)plink->value.pv_link.pvt; + dbScanPassive(precord,paddr->precord); + return; + } + if(plink->type!=CA_LINK) return; + pvlink = &plink->value.pv_link; + if(!(pvlink->pvlMask & pvlOptFWD)) return; + fwdLinkValue = 1; + dbCaPutLink(plink,DBR_SHORT,&fwdLinkValue,1); + return; +} /* * Process the record. diff --git a/src/db/dbAccess.h b/src/db/dbAccess.h index 725c1ebb8..6e46222d4 100644 --- a/src/db/dbAccess.h +++ b/src/db/dbAccess.h @@ -274,6 +274,7 @@ long dbGetNelements(struct link *plink,long *nelements); int dbIsLinkConnected(struct link *plink); long dbScanLink(struct dbCommon *pfrom, struct dbCommon *pto); long dbScanPassive(struct dbCommon *pfrom,struct dbCommon *pto); +void dbScanFwdLink(dbCommon *precord, struct link *plink); long dbProcess(struct dbCommon *precord); long dbNameToAddr(char *pname,struct dbAddr *); long dbGetLinkValue(struct link *,short dbrType,