# | Line 31 | Line 31 | |
---|---|---|
31 | #include <stdarg.h> | |
32 | #include <errno.h> | |
33 | #include <netdb.h> | |
34 | + | #include <netinet/in.h> |
35 | ||
36 | #include <ukcprog.h> | |
37 | #include <statgrab.h> | |
# | Line 46 | Line 47 | typedef struct{ | |
47 | ||
48 | char *host_ip; | |
49 | char *host_fqdn; | |
50 | + | int preset_fqdn; |
51 | + | int preset_ip; |
52 | ||
53 | char *server_fqdn; | |
54 | int server_udp_port; | |
# | Line 405 | Line 408 | int ihost_getconfig(ihost_state_t *ihost_state){ | |
408 | * this already be NULL */ | |
409 | if(ihost_state->file_list!=NULL) free(ihost_state->file_list); | |
410 | if(ihost_state->last_modified!=NULL) free(ihost_state->last_modified); | |
408 | – | if(ihost_state->host_fqdn!=NULL) free(ihost_state->host_fqdn); |
411 | if(ihost_state->server_fqdn!=NULL) free(ihost_state->server_fqdn); | |
410 | – | if(ihost_state->host_ip!=NULL) free(ihost_state->host_ip); |
412 | ||
413 | + | if(ihost_state->preset_fqdn){ |
414 | + | if(host_fqdn != NULL) free(host_fqdn); |
415 | + | }else{ |
416 | + | if(ihost_state->host_fqdn!=NULL) free(ihost_state->host_fqdn); |
417 | + | ihost_state->host_fqdn=host_fqdn; |
418 | + | } |
419 | + | |
420 | + | if(ihost_state->preset_ip){ |
421 | + | if(host_ip != NULL) free(host_ip); |
422 | + | }else{ |
423 | + | if(ihost_state->host_ip!=NULL) free(ihost_state->host_ip); |
424 | + | ihost_state->host_ip=host_ip; |
425 | + | } |
426 | + | |
427 | + | |
428 | ihost_state->file_list=file_list; | |
429 | ihost_state->last_modified=last_modified; | |
414 | – | ihost_state->host_fqdn=host_fqdn; |
415 | – | ihost_state->host_ip=host_ip; |
430 | ihost_state->server_fqdn=server_fqdn; | |
431 | ihost_state->server_udp_port=server_udp_port; | |
432 | ihost_state->udp_update_time=udp_update_time; | |
# | Line 702 | Line 716 | void usage(char *progname){ | |
716 | fprintf(stderr, "Options\n"); | |
717 | fprintf(stderr, " -v Verbose mode,-vv would make even more verbose\n"); | |
718 | fprintf(stderr, " -f Foreground mode, print errors to stderr\n"); | |
719 | + | fprintf(stderr, " -s Set the machine name to be reported as\n"); |
720 | + | fprintf(stderr, " -i Set the IP to be reported as\n"); |
721 | fprintf(stderr, " -V Print version number\n"); | |
722 | fprintf(stderr, " -h Prints this help page\n"); | |
723 | exit(1); | |
# | Line 733 | Line 749 | int main(int argc, char **argv){ | |
749 | ihost_state.filtermanager_host=NULL; | |
750 | ihost_state.host_fqdn=NULL; | |
751 | ihost_state.host_ip=NULL; | |
752 | + | ihost_state.preset_fqdn = 0; |
753 | + | ihost_state.preset_ip = 0; |
754 | ihost_state.server_fqdn=NULL; | |
755 | ihost_state.file_list=NULL; | |
756 | ihost_state.last_modified=NULL; | |
757 | ||
758 | < | while((cmdopt=getopt(argc, argv, "vfhV")) != -1){ |
758 | > | while((cmdopt=getopt(argc, argv, "vfhVs:i:")) != -1){ |
759 | switch(cmdopt){ | |
760 | case 'v': | |
761 | ihost_config.verbose++; | |
# | Line 755 | Line 773 | int main(int argc, char **argv){ | |
773 | case 'V': | |
774 | fprintf(stderr, "%s version %s\n", argv[0], VERSION); | |
775 | break; | |
776 | + | case 's': |
777 | + | ihost_state.preset_fqdn = 1; |
778 | + | ihost_state.host_fqdn = strdup(optarg); |
779 | + | if(ihost_state.host_fqdn == NULL){ |
780 | + | fprintf(stderr, "Missing hostname\n"); |
781 | + | usage(argv[0]); |
782 | + | } |
783 | + | break; |
784 | + | case 'i': |
785 | + | /* Hmm.. Someone could set any string to be the IP, and it will let it */ |
786 | + | ihost_state.preset_ip = 1; |
787 | + | ihost_state.host_ip = strdup(optarg); |
788 | + | if(ihost_state.host_ip == NULL){ |
789 | + | fprintf(stderr, "Missing ip\n"); |
790 | + | usage(argv[0]); |
791 | + | } |
792 | + | break; |
793 | ||
794 | default: | |
795 | usage(argv[0]); |
– | Removed lines |
+ | Added lines |
< | Changed lines |
> | Changed lines |