%% options copyright owner = Dirk Krause copyright year = 2012-2014 license = bsd %% module #include "dk3all.h" #include "itadmin.h" $!trace-include /** Keywords used by the module. */ static char const * const itadmin_ethers_c8_kw[] = { $!string-table # # 0: Newline # \n # # 1: File open mode w # w # # 2: File name "ethers-byip" # ethers-by-ip # # 3: File name "ethers-by-mac" # ethers-by-mac # # 4: File name "ethers.ldif" # ethers.ldif # # 5: Start of DN line # dn: cn= # # 6: Middle of DN line # ,ou=ethers, # # 7: objectClass: ieee802Device # objectClass: ieee802Device # # 8: objectClass: device # objectClass: device # # 9: objectClass: top # objectClass: top # # 10: cn: (start of line) # cn: # # 11: macAddress: (start of line) # macAddress: $!end }; int itadmin_ethers_output(itadmin_job *job) { itadmin_host *host; FILE *f1; FILE *f2; int back = 0; $? "+ itadmin_ethers_out" f1 = dk3sf_c8_fopen_app( itadmin_ethers_c8_kw[2], itadmin_ethers_c8_kw[1], job->app ); if(f1) { f2 = dk3sf_c8_fopen_app( itadmin_ethers_c8_kw[3], itadmin_ethers_c8_kw[1], job->app ); if(f2) { back = 1; dk3sto_it_reset(job->i_hoi); while(NULL != (host = (itadmin_host *)dk3sto_it_next(job->i_hoi))) { if((host->ipv4) && (host->sn) && (host->maca)) { itadmin_tool_write_ip(f1, host->ipv4); fputc('\t', f1); fputs(host->maca, f1); fputc('\n', f1); fputs(host->maca, f2); fputc('\t', f2); itadmin_tool_write_ip(f2, host->ipv4); fputc('\n', f2); } } #if DK3_CHAR_SIZE == 1 if(!dk3sf_fclose_fn_app(f2, itadmin_ethers_c8_kw[3], job->app)) { back = 0; } #else if(!dk3sf_fclose_fn_app(f2, NULL, job->app)) { back = 0; } #endif } else { } #if DK3_CHAR_SIZE == 1 if(!dk3sf_fclose_fn_app(f1, itadmin_ethers_c8_kw[2], job->app)) { back = 0; } #else if(!dk3sf_fclose_fn_app(f1, NULL, job->app)) { back = 0; } #endif } else { } $? "- itadmin_ethers_out %d", back return back; } int itadmin_ethers_ldif_output(itadmin_job *job) { char bu[ITADMIN_CONFIG_LINE_SIZE]; itadmin_host *host; FILE *fipo; int ie; int back = 0; $? "+ itadmin_ethers_ldif_output" ie = dk3app_get_encoding(job->app); if(dk3str_to_c8u_app(bu,sizeof(bu),job->ldapb,ie,job->app)) { fipo = dk3sf_c8_fopen_app( itadmin_ethers_c8_kw[4], itadmin_ethers_c8_kw[1], job->app ); if(fipo) { back = 1; dk3sto_it_reset(job->i_hoi); while(NULL != (host = (itadmin_host *)dk3sto_it_next(job->i_hoi))) { if((host->ipv4) && (host->sn) && (host->maca)) { fputs(itadmin_ethers_c8_kw[5], fipo); itadmin_tool_write_ip(fipo, host->ipv4); fputs(itadmin_ethers_c8_kw[6], fipo); fputs(bu, fipo); fputc('\n', fipo); fputs(itadmin_ethers_c8_kw[7], fipo); fputc('\n', fipo); fputs(itadmin_ethers_c8_kw[8], fipo); fputc('\n', fipo); fputs(itadmin_ethers_c8_kw[9], fipo); fputc('\n', fipo); fputs(itadmin_ethers_c8_kw[10], fipo); itadmin_tool_write_ip(fipo, host->ipv4); fputc('\n', fipo); fputs(itadmin_ethers_c8_kw[11], fipo); fputs(host->maca, fipo); fputc('\n', fipo); fputc('\n', fipo); } } #if DK3_CHAR_SIZE == 1 if(!dk3sf_fclose_fn_app(fipo, itadmin_ethers_c8_kw[4], job->app)) { back = 0; } #else if(!dk3sf_fclose_fn_app(fipo, NULL, job->app)) { back = 0; } #endif } else { } } else { } $? "- itadmin_ethers_ldif_output %d", back return back; }