Distributed Name Service (DNS) Management Programming Manual

DNS Programming Example, TAL
46958 Tandem Computers Incorporated G–19
STRUCT .EXT req^buf(zdns^ddl^msg^buffer^def); !Request buffer
STRUCT .EXT resp^buf(zdns^ddl^msg^buffer^def); !Response buffer
INT(32)
result !Value returned by DNS^Send.
;
STRUCT !ADD ALIAS parameter.
.param(zdns^ddl^add^alias^def)
;
!ADD ALIAS parameter map.
INT param^map[0:zdns^map^add^alias^wln - 1] = 'P' := zdns^map^add^alias;
!
! Procedure body; initialize ADD ALIAS request buffer.
!
IF (status := ssinit(req^buf
, zdns^val^buflen
, dns^ssid
, zspi^val^cmdhdr
, zdns^cmd^add
, zdns^obj^alias
,
,
, true))
THEN
RETURN dns^spierr(status);
!
! Initialize ADD ALIAS parameter.
!
IF (status := ssnull(param^map, param)) THEN
RETURN dns^spierr(status);
!
! Build parameter.
!
param.zname ':=' alias FOR zdns^val^dnslen;
param.ztype ':=' aliastype FOR zdns^val^typelen;
IF domain = ["LOCAL" , 27 * [" "]] THEN
param.zdomain.z^b ':=' [" "] & param.zdomain.z^b FOR zdns^val^dnslen - 1
ELSE
IF domain <> [zdns^val^dnslen * [" "]] THEN
param.zdomain ':=' domain FOR zdns^val^dnslen;
param.zreftype := reftype;
IF reftype = zdns^obj^ssobj THEN
param.zssobj ':=' ssobject FOR zdns^val^objlen;
param.zssmgr ':=' ssmanager FOR zdns^val^mgrlen;