mirror of
https://github.com/samba-team/samba.git
synced 2024-12-23 17:34:34 +03:00
talloc'ify ads modify functions.
This commit is contained in:
parent
1f186c60ad
commit
e097666499
@ -45,7 +45,7 @@ ADS_STATUS ads_find_printer_on_server(ADS_STRUCT *ads, void **res,
|
|||||||
|
|
||||||
asprintf(&exp, "(printerName=%s)", printer);
|
asprintf(&exp, "(printerName=%s)", printer);
|
||||||
status = ads_do_search(ads, srv_dn, LDAP_SCOPE_SUBTREE,
|
status = ads_do_search(ads, srv_dn, LDAP_SCOPE_SUBTREE,
|
||||||
exp, &attrs, res);
|
exp, attrs, res);
|
||||||
|
|
||||||
free(exp);
|
free(exp);
|
||||||
return status;
|
return status;
|
||||||
@ -57,46 +57,51 @@ ADS_STATUS ads_find_printer_on_server(ADS_STRUCT *ads, void **res,
|
|||||||
ADS_STATUS ads_mod_printer_entry(ADS_STRUCT *ads, char *prt_dn,
|
ADS_STATUS ads_mod_printer_entry(ADS_STRUCT *ads, char *prt_dn,
|
||||||
const ADS_PRINTER_ENTRY *prt)
|
const ADS_PRINTER_ENTRY *prt)
|
||||||
{
|
{
|
||||||
ADS_MODLIST *mods;
|
ADS_MODLIST mods;
|
||||||
ADS_STATUS status;
|
ADS_STATUS status;
|
||||||
|
TALLOC_CTX *ctx;
|
||||||
|
|
||||||
|
if (!(ctx = talloc_init_named("mod_printer_entry")))
|
||||||
|
return ADS_ERROR(LDAP_NO_MEMORY);
|
||||||
|
|
||||||
/* allocate the list */
|
/* allocate the list */
|
||||||
*mods = ads_init_mods();
|
mods = ads_init_mods(ctx);
|
||||||
|
|
||||||
/* add the attributes to the list - required ones first */
|
/* add the attributes to the list - required ones first */
|
||||||
ads_mod_repl(mods, "printerName", prt->printerName);
|
ads_mod_repl(ctx, &mods, "printerName", prt->printerName);
|
||||||
ads_mod_repl(mods, "serverName", prt->serverName);
|
ads_mod_repl(ctx, &mods, "serverName", prt->serverName);
|
||||||
ads_mod_repl(mods, "shortServerName", prt->shortServerName);
|
ads_mod_repl(ctx, &mods, "shortServerName", prt->shortServerName);
|
||||||
ads_mod_repl(mods, "uNCName", prt->uNCName);
|
ads_mod_repl(ctx, &mods, "uNCName", prt->uNCName);
|
||||||
ads_mod_repl(mods, "versionNumber", prt->versionNumber);
|
ads_mod_repl(ctx, &mods, "versionNumber", prt->versionNumber);
|
||||||
|
|
||||||
/* now the optional ones */
|
/* now the optional ones */
|
||||||
ads_mod_repl_list(mods, "description", prt->description);
|
ads_mod_repl_list(ctx, &mods, "description", prt->description);
|
||||||
ads_mod_repl(mods, "assetNumber",prt->assetNumber);
|
ads_mod_repl(ctx, &mods, "assetNumber",prt->assetNumber);
|
||||||
ads_mod_repl(mods, "bytesPerMinute",prt->bytesPerMinute);
|
ads_mod_repl(ctx, &mods, "bytesPerMinute",prt->bytesPerMinute);
|
||||||
ads_mod_repl(mods, "defaultPriority",prt->defaultPriority);
|
ads_mod_repl(ctx, &mods, "defaultPriority",prt->defaultPriority);
|
||||||
ads_mod_repl(mods, "driverName", prt->driverName);
|
ads_mod_repl(ctx, &mods, "driverName", prt->driverName);
|
||||||
ads_mod_repl(mods, "driverVersion",prt->driverVersion);
|
ads_mod_repl(ctx, &mods, "driverVersion",prt->driverVersion);
|
||||||
ads_mod_repl(mods, "location", prt->location);
|
ads_mod_repl(ctx, &mods, "location", prt->location);
|
||||||
ads_mod_repl(mods, "operatingSystem",prt->operatingSystem);
|
ads_mod_repl(ctx, &mods, "operatingSystem",prt->operatingSystem);
|
||||||
ads_mod_repl(mods, "operatingSystemHotfix",prt->operatingSystemHotfix);
|
ads_mod_repl(ctx, &mods, "operatingSystemHotfix",
|
||||||
ads_mod_repl(mods, "operatingSystemServicePack",
|
prt->operatingSystemHotfix);
|
||||||
|
ads_mod_repl(ctx, &mods, "operatingSystemServicePack",
|
||||||
prt->operatingSystemServicePack);
|
prt->operatingSystemServicePack);
|
||||||
ads_mod_repl(mods, "operatingSystemVersion",
|
ads_mod_repl(ctx, &mods, "operatingSystemVersion",
|
||||||
prt->operatingSystemVersion);
|
prt->operatingSystemVersion);
|
||||||
ads_mod_repl(mods, "physicalLocationObject",
|
ads_mod_repl(ctx, &mods, "physicalLocationObject",
|
||||||
prt->physicalLocationObject);
|
prt->physicalLocationObject);
|
||||||
ads_mod_repl_list(mods, "portName", prt->portName);
|
ads_mod_repl_list(ctx, &mods, "portName", prt->portName);
|
||||||
ads_mod_repl(mods, "printStartTime", prt->printStartTime);
|
ads_mod_repl(ctx, &mods, "printStartTime", prt->printStartTime);
|
||||||
ads_mod_repl(mods, "printEndTime", prt->printEndTime);
|
ads_mod_repl(ctx, &mods, "printEndTime", prt->printEndTime);
|
||||||
ads_mod_repl_list(mods, "printBinNames", prt->printBinNames);
|
ads_mod_repl_list(ctx, &mods, "printBinNames", prt->printBinNames);
|
||||||
/*... and many others */
|
/*... and many others */
|
||||||
|
|
||||||
/* do the ldap modify */
|
/* do the ldap modify */
|
||||||
status = ads_gen_mod(ads, prt_dn, *mods);
|
status = ads_gen_mod(ads, prt_dn, mods);
|
||||||
|
|
||||||
/* free mod list, mods, and values */
|
/* free mod list, mods, and values */
|
||||||
ads_free_mods(*mods);
|
talloc_destroy(ctx);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
@ -109,16 +114,27 @@ static ADS_STATUS ads_add_printer_entry(ADS_STRUCT *ads, char *prt_dn,
|
|||||||
const ADS_PRINTER_ENTRY *prt)
|
const ADS_PRINTER_ENTRY *prt)
|
||||||
{
|
{
|
||||||
ADS_STATUS status;
|
ADS_STATUS status;
|
||||||
|
TALLOC_CTX *ctx;
|
||||||
|
ADS_MODLIST mods;
|
||||||
|
|
||||||
|
if (!(ctx = talloc_init_named("add_printer_entry")))
|
||||||
|
return ADS_ERROR(LDAP_NO_MEMORY);
|
||||||
|
|
||||||
|
if (!(mods = ads_init_mods(ctx)))
|
||||||
|
return ADS_ERROR(LDAP_NO_MEMORY);
|
||||||
|
|
||||||
/* These are the fields a printQueue must contain */
|
/* These are the fields a printQueue must contain */
|
||||||
status = ads_gen_add(ads, prt_dn,
|
ads_mod_add(ctx, &mods, "uNCName", prt->uNCName);
|
||||||
"uNCName", prt->uNCName, NULL,
|
ads_mod_add(ctx, &mods, "versionNumber", prt->versionNumber);
|
||||||
"versionNumber", prt->versionNumber, NULL,
|
ads_mod_add(ctx, &mods, "serverName", prt->serverName);
|
||||||
"serverName", prt->serverName, NULL,
|
ads_mod_add(ctx, &mods, "shortServerName", prt->shortServerName);
|
||||||
"shortServerName", prt->shortServerName, NULL,
|
ads_mod_add(ctx, &mods, "printerName", prt->printerName);
|
||||||
"printerName", prt->printerName, NULL,
|
ads_mod_add(ctx, &mods, "objectClass", "printQueue");
|
||||||
"objectClass", "printQueue", NULL,
|
|
||||||
NULL);
|
|
||||||
|
status = ads_gen_add(ads, prt_dn, mods);
|
||||||
|
|
||||||
|
talloc_destroy(ctx);
|
||||||
|
|
||||||
return status;
|
return status;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user