1
0
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:
Jim McDonough 0001-01-01 00:00:00 +00:00
parent 1f186c60ad
commit e097666499

View File

@ -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;
} }