1 /* 2 Copyright (C) 2012-2021, Dirk Krause 3 SPDX-License-Identifier: BSD-3-Clause 4 */ 5 6 /* 7 WARNING: This file was generated by the dkct program (see 8 http://dktools.sourceforge.net/ for details). 9 Changes you make here will be lost if dkct is run again! 10 You should modify the original source and run dkct on it. 11 Original source: itadmin.ctr 12 */ 13 14 /** @file itadmin.h Header file for the itadmin module. 15 */ 16 17 #ifndef ITADMIN_H_INCLUDED 18 /** Avoid multiple inclusions. */ 19 #define ITADMIN_H_INCLUDED 1 20 21 22 #include <libdk3c/dk3all.h> 23 #include <itadmin/dk3uc2l.h> 24 25 26 /** Computer owner/user. 27 */ 28 typedef struct { 29 char const *us; /**< Short name, login name (primary key). */ 30 char const *tt; /**< Title, academic degree. */ 31 char const *sn; /**< Surname. */ 32 char const *na; /**< Family name. */ 33 char const *em; /**< E-mail address. */ 34 char const *cc; /**< ID in cost controlling. */ 35 char const *si; /**< Staff ID number. */ 36 dk3_sto_t *s_ho; /**< Hosts for user. */ 37 dk3_sto_it_t *i_ho; /**< Iterator for hosts storage. */ 38 dk3_sto_t *s_li; /**< Licenses assigned to user. */ 39 dk3_sto_it_t *i_li; /**< Iterator for licenses storage. */ 40 } itadmin_user; 41 42 43 44 /** Building. 45 */ 46 typedef struct { 47 char const *s; /**< Short name (primary key). */ 48 char const *l; /**< Full building name. */ 49 char const *a1; /**< Address line 1. */ 50 char const *a2; /**< Address line 2. */ 51 char const *a3; /**< Address line 3. */ 52 char const *a4; /**< Address line 4. */ 53 char const *zc; /**< Zip code (german: Postleitzahl). */ 54 char const *city; /**< City/Town name. */ 55 } itadmin_building; 56 57 58 59 /** Speed for network connection. 60 */ 61 typedef struct { 62 char const *s; /**< Short speed name (primary key). */ 63 char const *l; /**< Long speed name (description). */ 64 } itadmin_speed; 65 66 67 68 /** VLAN. 69 */ 70 typedef struct { 71 char const *s; /**< Short VLAN name (primary key). */ 72 char const *l; /**< Long VLAN name (description). */ 73 dk3_sto_t *s_nw; /**< Storage for networks. */ 74 dk3_sto_it_t *i_nw; /**< Iterator through networks storage. */ 75 dk3_sto_t *s_do; /**< DHCP options for VLAN. */ 76 dk3_sto_it_t *i_do; /**< Iterator through DHCP options. */ 77 } itadmin_vlan; 78 79 80 81 /** Network connection socket. 82 */ 83 typedef struct { 84 char const *s; /**< Short name (label on socket, pk). */ 85 char const *hp; /**< Hub port used for socket. */ 86 char const *room; /**< Room name or number in building. */ 87 itadmin_speed *sp; /**< Speed setting for socket. */ 88 itadmin_vlan *vl; /**< VLAN for socket. */ 89 itadmin_building *bu; /**< Building. */ 90 } itadmin_connect; 91 92 93 94 /** Network. 95 */ 96 typedef struct { 97 itadmin_vlan *vl; /**< Parent VLAN. */ 98 dk3_sto_t *s_p; /**< Storage for DHCP pools. */ 99 dk3_sto_it_t *i_p; /**< Iterator through pools storage. */ 100 dk3_sto_t *s_dg; /**< Storage for DHCP groups in network. */ 101 dk3_sto_it_t *i_dg; /**< Iterator through groups in nw storage. */ 102 dk3_sto_t *s_do; /**< DHCP options. */ 103 dk3_sto_it_t *i_do; /**< Iterator for DHCP options. */ 104 dk3_sto_t *s_hoi; /**< Storage for hosts. */ 105 dk3_sto_it_t *i_hoi; /**< Iterator for hosts storage. */ 106 dk3_sto_t *s_dc; /**< DHCP classes for this network. */ 107 dk3_sto_it_t *i_dc; /**< Iterator through DHCP classes storage. */ 108 unsigned long ip4; /**< IPv4 start address (primary key). */ 109 unsigned long ma4; /**< IPv4 network mask. */ 110 unsigned long gw4; /**< IPv4 gateway. */ 111 unsigned long bc4; /**< IPv4 broadcast address. */ 112 } itadmin_network; 113 114 115 116 /** Netgroup. 117 */ 118 typedef struct { 119 char const *sn; /**< Short name (primary key). */ 120 char const *ln; /**< Long name (description). */ 121 size_t no; /**< Netgroup number. */ 122 } itadmin_netgroup; 123 124 125 126 /** Netgroup dependency. 127 */ 128 typedef struct { 129 itadmin_netgroup *pa; /**< Parent group. */ 130 itadmin_netgroup *ch; /**< Child group. */ 131 } itadmin_ngdep; 132 133 134 135 /** DHCP class. 136 */ 137 typedef struct { 138 char const *sn; /**< Short name (primary key). */ 139 char const *ln; /**< Long name (description). */ 140 dk3_sto_t *s_ho; /**< Hosts in this class. */ 141 dk3_sto_it_t *i_ho; /**< Iterator through hosts storage. */ 142 itadmin_network *dhcpn; /**< Network for DHCP hosts. */ 143 } itadmin_dhcp_class; 144 145 146 147 /** DHCP address pool. 148 */ 149 typedef struct { 150 itadmin_network *nw; /**< Network. */ 151 itadmin_dhcp_class *acl; /**< Allowed DHCP class. */ 152 dk3_sto_t *s_do; /**< DHCP options for pool. */ 153 dk3_sto_it_t *i_do; /**< Iterator for DHCP options. */ 154 dk3_sto_t *s_hoi; /**< Hosts storage. */ 155 dk3_sto_it_t *i_hoi; /**< Hosts storage iterator. */ 156 unsigned long ip4s; /**< IPv4 start address. */ 157 unsigned long ip4e; /**< IPv4 end address. */ 158 char duc; /**< Flag: Deny unknown clients. */ 159 char auc; /**< Flag: Allow unknown clients. */ 160 } itadmin_dhcp_pool; 161 162 163 164 /** DHCP group. 165 */ 166 typedef struct { 167 char const *sn; /**< Short group name (primary key). */ 168 char const *ln; /**< Long name (description). */ 169 dk3_sto_t *s_do; /**< DHCP options storage. */ 170 dk3_sto_it_t *i_do; /**< DHCP options iterator. */ 171 } itadmin_dhcp_group; 172 173 174 175 /** DHCP group within a network. 176 */ 177 typedef struct { 178 itadmin_dhcp_group *gr; /**< Group. */ 179 dk3_sto_t *s_h; /**< Storage for hosts in this group. */ 180 dk3_sto_it_t *i_h; /**< Iterator for storage. */ 181 } itadmin_dhcp_ginw; 182 183 184 185 /** Date (used for host expiration). 186 */ 187 typedef struct { 188 int y; /**< Year. */ 189 int m; /**< Month. */ 190 int d; /**< Day in month. */ 191 } itadmin_date; 192 193 194 195 /** Host. 196 */ 197 typedef struct { 198 itadmin_date expi; /**< Expiration date. */ 199 char const *sn; /**< Short host name (primary key). */ 200 char const *co; /**< Comment, description. */ 201 char const *maca; /**< MAC address. */ 202 char const *room; /**< Room within the building. */ 203 char const *inv; /**< Inventory ID. */ 204 char const *serno; /**< Serial number. */ 205 char const *hid; /**< Host ID. */ 206 char const *dnsd; /**< DNS domain. */ 207 itadmin_user *un; /**< System owner. */ 208 itadmin_netgroup *ng; /**< Netgroup. */ 209 itadmin_dhcp_class *dc; /**< DHCP class. */ 210 itadmin_dhcp_group *dg; /**< DHCP group. */ 211 itadmin_dhcp_pool *dp; /**< DHCP pool. */ 212 itadmin_connect *nc; /**< Network connection socket. */ 213 itadmin_building *bu; /**< Building. */ 214 dk3_sto_t *s_al; /**< Storage for aliases. */ 215 dk3_sto_it_t *i_al; /**< Iterator through aliases storage. */ 216 dk3_sto_t *s_do; /**< DHCP options for host. */ 217 dk3_sto_it_t *i_do; /**< DHCP options iterator. */ 218 dk3_sto_t *s_li; /**< Licenses assigned to host. */ 219 dk3_sto_it_t *i_li; /**< Iterator through licenses storage. */ 220 unsigned long ipv4; /**< IPv4 address. */ 221 char fnf; /**< Flag: Full name first in hosts. */ 222 char fgu; /**< Flag: Guest computer. */ 223 char snd; /**< Flag: Skip in network documentation. */ 224 char saw; /**< Flag: Skip in arpwatch configuration. */ 225 } itadmin_host; 226 227 228 229 /** Software manufacturer. 230 */ 231 typedef struct { 232 char const *sn; /**< Short name (primary key). */ 233 char const *ln; /**< Full name. */ 234 } itadmin_swman; 235 236 237 238 /** Software product. 239 */ 240 typedef struct { 241 char const *sn; /**< Short name (primary key). */ 242 char const *ln; /**< Full name. */ 243 itadmin_swman *mn; /**< Software manufacturer. */ 244 } itadmin_swprod; 245 246 247 248 /** License type. 249 */ 250 typedef struct { 251 char const *sn; /**< Short name (primary key). */ 252 char const *ln; /**< Full name. */ 253 int num; /**< Number of client licenses. */ 254 } itadmin_lictype; 255 256 257 258 /** Software license. 259 */ 260 typedef struct { 261 itadmin_date d_del; /**< Delivery date. */ 262 itadmin_date d_inv; /**< Invoice date. */ 263 char const *order; /**< Internal order ID. */ 264 char const *notes; /**< Additional notes about the license. */ 265 char const *i_del; /**< Delivery note ID. */ 266 char const *i_inv; /**< Invoice ID. */ 267 itadmin_swprod *prod; /**< Software product. */ 268 itadmin_lictype *ltype; /**< License type. */ 269 itadmin_user *owner; /**< License owner. */ 270 itadmin_host *host; /**< Host where license is used. */ 271 unsigned long pk; /**< Primary key from database. */ 272 } itadmin_license; 273 274 275 276 /** DHCP option. 277 */ 278 typedef struct { 279 char const *k; /**< Key (option name). */ 280 char const *v; /**< Option value. */ 281 long pk; /**< Primary key from database. */ 282 } itadmin_dhcp_option; 283 284 285 286 /** Job structure for the itadmin program. 287 */ 288 typedef struct { 289 itadmin_date today; /**< Current date. */ 290 dk3_app_t *app; /**< Application structure. */ 291 dk3_option_set_t *opt; /**< Option set. */ 292 dk3_sto_t *s_us; /**< User storage. */ 293 dk3_sto_it_t *i_us; /**< User storage iterator. */ 294 dk3_sto_t *s_usn; /**< User sorted by name. */ 295 dk3_sto_it_t *i_usn; /**< Storage iterator for users by name. */ 296 dk3_sto_t *s_bu; /**< Building storage. */ 297 dk3_sto_it_t *i_bu; /**< Building storage iterator. */ 298 dk3_sto_t *s_sp; /**< Patch speed storage. */ 299 dk3_sto_it_t *i_sp; /**< Patch speed storage iterator. */ 300 dk3_sto_t *s_vl; /**< VLAN storage. */ 301 dk3_sto_it_t *i_vl; /**< VLAN storage iterator. */ 302 dk3_sto_t *s_pa; /**< Network patch storage. */ 303 dk3_sto_it_t *i_pa; /**< Network patch storage iterator. */ 304 dk3_sto_t *s_nw; /**< Network storage. */ 305 dk3_sto_it_t *i_nw; /**< Network storage iterator. */ 306 dk3_sto_t *s_ng; /**< Netgroup storage. */ 307 dk3_sto_it_t *i_ng; /**< Netgroup storage iterator. */ 308 dk3_sto_t *s_nd; /**< Netgroup dependency storage. */ 309 dk3_sto_it_t *i_nd; /**< Netgroup dependency storage iterator. */ 310 dk3_sto_t *s_dc; /**< DHCP class storage. */ 311 dk3_sto_it_t *i_dc; /**< DHCP class storage iterator. */ 312 dk3_sto_t *s_dp; /**< DHCP pool storage. */ 313 dk3_sto_it_t *i_dp; /**< DHCP pool storage iterator. */ 314 dk3_sto_t *s_dg; /**< DHCP group storage. */ 315 dk3_sto_it_t *i_dg; /**< DHCP group storage iterator. */ 316 dk3_sto_t *s_ho; /**< Host storage, sorted by name. */ 317 dk3_sto_it_t *i_ho; /**< Host storage iterator for s_ho. */ 318 dk3_sto_t *s_hoi; /**< Host storage, sorted by IP address. */ 319 dk3_sto_it_t *i_hoi; /**< Host storage iterator for s_hoi. */ 320 dk3_sto_t *s_sm; /**< Software manufacturer storage. */ 321 dk3_sto_it_t *i_sm; /**< Software manufacturer storage iterator. */ 322 dk3_sto_t *s_sw; /**< Software storage. */ 323 dk3_sto_it_t *i_sw; /**< Software storage iterator. */ 324 dk3_sto_t *s_lt; /**< License type storage. */ 325 dk3_sto_it_t *i_lt; /**< License type storage iterator. */ 326 dk3_sto_t *s_lc; /**< Licenses storage. */ 327 dk3_sto_it_t *i_lc; /**< Licenses storage iterator. */ 328 dk3_sto_t *s_lf; /**< Free licenses. */ 329 dk3_sto_it_t *i_lf; /**< Free licenses iterator. */ 330 dk3_sto_t *s_do; /**< DHCP options for entire server. */ 331 dk3_sto_it_t *i_do; /**< Iterator for DHCP options. */ 332 void *dbptr; /**< Database object pointer. */ 333 dk3_bm_t *ngdep; /**< Direct/indirect netgroup dependencies. */ 334 dk3_uc2lat_t *uc2l; /**< Unicode to LaTeX converter. */ 335 dkChar const * const *msg; /**< Localized message texts. */ 336 dkChar const * const *noloc; /**< Texts, not localized. */ 337 dkChar const *dbhn; /**< Database host name. */ 338 dkChar const *dbn; /**< Database name. */ 339 dkChar const *dbcf; /**< Database credentials files. */ 340 dkChar const *dbus; /**< Database user name. */ 341 dkChar const *dbpw; /**< Database password. */ 342 dkChar const *vlan; /**< VLAN name. */ 343 dkChar const *org; /**< Organization name. */ 344 dkChar const *ou; /**< Organizational unit name. */ 345 dkChar const *admn; /**< Administrator name. */ 346 dkChar const *ldapb; /**< LDAP base. */ 347 size_t nng; /**< Number of netgroups. */ 348 int exval; /**< Exit status code. */ 349 int ec; /**< Error code, see @ref errorcodes. */ 350 int cmd; /**< Command to execute. */ 351 int f_dh; /**< Flag: Write dhcpd.conf file. */ 352 int dbt; /**< Database type. */ 353 int gdate; /**< Flag: German date notation. */ 354 int hlh; /**< Flag: Have localhost entry. */ 355 int ukoma; /**< Flag: Use koma-script. */ 356 int rel; /**< Release lease on shutdown. */ 357 int m_p; /**< Flag: Markers for points. */ 358 int m_vl; /**< Flag: Markers for vlan. */ 359 int m_sn; /**< Flag: Markers for subnets. */ 360 int m_gr; /**< Flag: Markers for groups. */ 361 int m_po; /**< Flag: Markers for pools. */ 362 int m_ho; /**< Flag: Markers for hosts. */ 363 } itadmin_job; 364 365 366 367 /** Reader structure for credentials file. 368 */ 369 typedef struct { 370 itadmin_job *job; /**< Job structure. */ 371 int f_clnt; /**< Flag: In client section. */ 372 } itadmin_cred_reader; 373 374 375 /** @defgroup itadmincommand Command IDs for itadmin. */ 376 /**@{*/ 377 /** itadmin command: Rebuild configuration and network documentation. 378 */ 379 #define ITADMIN_CMD_CONFIG 1 380 381 /** itadmin command: Rebuild license report. 382 */ 383 #define ITADMIN_CMD_LICENSES 2 384 385 /** itadmin command: show help text. 386 */ 387 #define ITADMIN_CMD_HELP 4 388 389 /** itadmin command: show version information. 390 */ 391 #define ITADMIN_CMD_VERSION 8 392 393 /** itadmin command: show license terms. 394 */ 395 #define ITADMIN_CMD_LICENSE_TERMS 16 396 /**@}*/ 397 398 399 400 /** Maximum size for configuration file lines. 401 */ 402 #define ITADMIN_CONFIG_LINE_SIZE 256 403 404 /** Function to remove one object. 405 */ 406 typedef void itadmin_obj_del(void *); 407 408 #ifdef __cplusplus 409 extern "C" { 410 #endif 411 412 /** Read configuration file(s). 413 @param job Job structure. 414 @return 1 on success, 0 on error. 415 */ 416 int 417 itadmin_config_read(itadmin_job *job); 418 419 /** Delete one user. 420 @param v Object to delete. 421 */ 422 void 423 itadmin_mem_user_del(void *v); 424 425 /** Delete one building. 426 @param v Object to delete. 427 */ 428 void 429 itadmin_mem_building_del(void *v); 430 431 /** Delete one speed setting. 432 @param v Object to delete. 433 */ 434 void 435 itadmin_mem_speed_del(void *v); 436 437 /** Delete one VLAN. 438 @param v Object to delete. 439 */ 440 void 441 itadmin_mem_vlan_del(void *v); 442 443 /** Delete one network connection patch. 444 @param v Object to delete. 445 */ 446 void 447 itadmin_mem_connect_del(void *v); 448 449 /** Delete one network. 450 @param v Object to delete. 451 */ 452 void 453 itadmin_mem_network_del(void *v); 454 455 /** Delete one netgroup. 456 @param v Object to delete. 457 */ 458 void 459 itadmin_mem_netgroup_del(void *v); 460 461 /** Delete one netgroup dependency. 462 @param v Object to delete. 463 */ 464 void 465 itadmin_mem_ngdep_del(void *v); 466 467 /** Delete one DHCP class. 468 @param v Object to delete. 469 */ 470 void 471 itadmin_mem_dhcp_class_del(void *v); 472 473 /** Delete one DHCP pool. 474 @param v Object to delete. 475 */ 476 void 477 itadmin_mem_dhcp_pool_del(void *v); 478 479 /** Delete one DHCP group. 480 @param v Object to delete. 481 */ 482 void 483 itadmin_mem_dhcp_group_del(void *v); 484 485 /** Delete one host. 486 @param v Object to delete. 487 */ 488 void 489 itadmin_mem_host_del(void *v); 490 491 /** Delete one software manufacturer. 492 @param v Object to delete. 493 */ 494 void 495 itadmin_mem_sw_man_del(void *v); 496 497 /** Delete one software product. 498 @param v Object to delete. 499 */ 500 void 501 itadmin_mem_software_del(void *v); 502 503 /** Delete one license type. 504 @param v Object to delete. 505 */ 506 void 507 itadmin_mem_lic_type_del(void *v); 508 509 /** Delete one license. 510 @param v Object to delete. 511 */ 512 void 513 itadmin_mem_license_del(void *v); 514 515 /** Create new user. 516 @param job Job structure. 517 @param un Name. 518 @param tt Academic degree or title (may be NULL). 519 @param sn Surname (may be NULL). 520 @param na Name. 521 @param em E-Mail (may be NULL). 522 @param cc Cost control ID (may be NULL). 523 @param si Staff ID number (may be NULL). 524 @return Pointer to new object on success, NULL on error. 525 */ 526 itadmin_user * 527 itadmin_mem_user_new( 528 itadmin_job *job, 529 char const *un, 530 char const *tt, 531 char const *sn, 532 char const *na, 533 char const *em, 534 char const *cc, 535 char const *si 536 ); 537 538 /** Create new building. 539 @param job Job structure. 540 @param s Name. 541 @param l Long name (may be NULL). 542 @param a1 Address line 1 (typically street and number, 543 may be NULL). 544 @param a2 Address line 2 (may be NULL). 545 @param a3 Address line 3 (may be NULL). 546 @param a4 Address line 4 (may be NULL). 547 @param zc Zip code (may be NULL). 548 @param city Town or city name (may be NULL). 549 @return Pointer to new object on success, NULL on error. 550 */ 551 itadmin_building * 552 itadmin_mem_building_new( 553 itadmin_job *job, 554 char const *s, 555 char const *l, 556 char const *a1, 557 char const *a2, 558 char const *a3, 559 char const *a4, 560 char const *zc, 561 char const *city 562 ); 563 564 /** Create new speed setting. 565 @param job Job structure. 566 @param s Name. 567 @param n Description (may be NULL). 568 @return Pointer to new object on success, NULL on error. 569 */ 570 itadmin_speed * 571 itadmin_mem_speed_new( 572 itadmin_job *job, 573 char const *s, 574 char const *n 575 ); 576 577 /** Create new VLAN. 578 @param job Job structure. 579 @param s Name. 580 @param l Long name (may be NULL). 581 @return Pointer to new object on success, NULL on error. 582 */ 583 itadmin_vlan * 584 itadmin_mem_vlan_new( 585 itadmin_job *job, 586 char const *s, 587 char const *l 588 ); 589 590 /** Create new network connector. 591 @param job Job structure. 592 @param s Name. 593 @param hp Building. 594 @param room Room. 595 @param sp Speed setting. 596 @param vl VLAN. 597 @param bu Building. 598 @return Pointer to new object on success, NULL on error. 599 */ 600 itadmin_connect * 601 itadmin_mem_connect_new( 602 itadmin_job *job, 603 char const *s, 604 char const *hp, 605 char const *room, 606 itadmin_speed *sp, 607 itadmin_vlan *vl, 608 itadmin_building *bu 609 ); 610 611 /** Create new network. 612 @param job Job structure. 613 @param ip4 Network address. 614 @param ma4 Network mask. 615 @param gw4 Gateway. 616 @param bc4 Broadcast address. 617 @param vl VLAN. 618 @return Pointer to new object on success, NULL on error. 619 */ 620 itadmin_network * 621 itadmin_mem_network_new( 622 itadmin_job *job, 623 unsigned long ip4, 624 unsigned long ma4, 625 unsigned long gw4, 626 unsigned long bc4, 627 itadmin_vlan *vl 628 ); 629 630 /** Create new netgroup. 631 @param job Job structure. 632 @param sn Short name. 633 @param ln Long name (may be NULL). 634 @return Pointer to new object on success, NULL on error. 635 */ 636 itadmin_netgroup * 637 itadmin_mem_netgroup_new( 638 itadmin_job *job, 639 char const *sn, 640 char const *ln 641 ); 642 643 /** Create new netgroup dependency. 644 @param job Job structure. 645 @param pa Parent group. 646 @param ch Child group. 647 @return Pointer to new object on success, NULL on error. 648 */ 649 itadmin_ngdep * 650 itadmin_mem_ngdep_new( 651 itadmin_job *job, 652 itadmin_netgroup *pa, 653 itadmin_netgroup *ch 654 ); 655 656 /** Create new DHCP class. 657 @param job Job structure. 658 @param sn Short name. 659 @param ln Long name (may be NULL). 660 @return Pointer to new object on success, NULL on error. 661 */ 662 itadmin_dhcp_class * 663 itadmin_mem_dhcp_class_new( 664 itadmin_job *job, 665 char const *sn, 666 char const *ln 667 ); 668 669 /** Create new DHCP pool. 670 @param job Job structure. 671 @param nw Network. 672 @param cn Allowed class (if unknown clients are denied, 673 may be NULL). 674 @param ip4s IPv4 start address. 675 @param ip4e IPv4 end address. 676 @param duc Flag: Deny unknown clients (needs cn). 677 @param auc Flag: Allow unknown clients. 678 @return Pointer to new object on success, NULL on error. 679 */ 680 itadmin_dhcp_pool * 681 itadmin_mem_dhcp_pool_new( 682 itadmin_job *job, 683 itadmin_network *nw, 684 itadmin_dhcp_class *cn, 685 unsigned long ip4s, 686 unsigned long ip4e, 687 int duc, 688 int auc 689 ); 690 691 /** Create new DHCP group. 692 @param job Job structure. 693 @param sn Short name. 694 @param ln Long name (may be NULL). 695 @return Pointer to new object on success, NULL on error. 696 */ 697 itadmin_dhcp_group * 698 itadmin_mem_dhcp_group_new( 699 itadmin_job *job, 700 char const *sn, 701 char const *ln 702 ); 703 704 /** Create new host 705 @param job Job structure. 706 @param sn Short name. 707 @param co Comment/description (may be NULL). 708 @param maca MAC address (may be NULL). 709 @param room Room (may be NULL). 710 @param inv Inventory number (may be NULL). 711 @param serno Serial number (may be NULL). 712 @param hid Host ID (may be NULL). 713 @param expi Expiration date (may be NULL). 714 @param dnsd DNS domain (may be NULL). 715 @param un System owner. 716 @param ng Netgroup (may be NULL). 717 @param dc DHCP class (may be NULL). 718 @param dg DHCP group (may be NULL). 719 @param nc Network connection socket (may be NULL). 720 @param bu Building (may be NULL). 721 @param ipv4 IPv4 address (may be NULL). 722 @param fnf Flag: FQDN first in hosts file. 723 @param fgu Flag: Guest computer (bring your own device). 724 @param snd Flag: Skip in network documentation. 725 @param saw Flag: Skip in arpwatch configuration. 726 @return Pointer to new object on success, NULL on error. 727 */ 728 itadmin_host * 729 itadmin_mem_host_new( 730 itadmin_job *job, 731 itadmin_date *expi, 732 char const *sn, 733 char const *co, 734 char const *maca, 735 char const *room, 736 char const *inv, 737 char const *serno, 738 char const *hid, 739 char const *dnsd, 740 itadmin_user *un, 741 itadmin_netgroup *ng, 742 itadmin_dhcp_class *dc, 743 itadmin_dhcp_group *dg, 744 itadmin_connect *nc, 745 itadmin_building *bu, 746 unsigned long ipv4, 747 int fnf, 748 int fgu, 749 int snd, 750 int saw 751 ); 752 753 /** Create new software manufacturer. 754 @param job Job structure. 755 @param sn Short name. 756 @param ln Long name (description). 757 @return Pointer to new object on success, NULL on error. 758 */ 759 itadmin_swman * 760 itadmin_mem_sw_man_new( 761 itadmin_job *job, 762 char const *sn, 763 char const *ln 764 ); 765 766 /** Create new software product. 767 @param job Job structure. 768 @param sn Short name. 769 @param ln Long name. 770 @param mn Software manufacturer name (may be NULL). 771 @return Pointer to new object on success, NULL on error. 772 */ 773 itadmin_swprod * 774 itadmin_mem_swprod_new( 775 itadmin_job *job, 776 char const *sn, 777 char const *ln, 778 itadmin_swman *mn 779 ); 780 781 /** Create new license type. 782 @param job Job structure. 783 @param sn Short license type name. 784 @param ln Long name (description). 785 @param num Number of client licenses for floating license servers. 786 @return Pointer to new object on success, NULL on error. 787 */ 788 itadmin_lictype * 789 itadmin_mem_lictype_new( 790 itadmin_job *job, 791 char const *sn, 792 char const *ln, 793 int num 794 ); 795 796 /** Create new license. 797 @param job Job structure. 798 @param pk Primary key from licenses table (unused). 799 @param order Order ID or tracking information (may be NULL). 800 @param notes Additional notes (may be NULL). 801 @param i_del Delivery note ID (may be NULL). 802 @param i_inv Invoice ID (may be NULL). 803 @param prod Software product. 804 @param ltype License type. 805 @param owner License owner (may be NULL). 806 @param host Computer (may be NULL). 807 @return Pointer to new object on success, NULL on error. 808 */ 809 itadmin_license * 810 itadmin_mem_license_new( 811 itadmin_job *job, 812 unsigned long pk, 813 char const *order, 814 char const *notes, 815 char const *i_del, 816 char const *i_inv, 817 itadmin_swprod *prod, 818 itadmin_lictype *ltype, 819 itadmin_user *owner, 820 itadmin_host *host 821 ); 822 823 /** Create new DHCP group in network. 824 @param job Job structure. 825 @param gr DHCP group structure. 826 @return Pointer to new object on success, NULL on error. 827 */ 828 itadmin_dhcp_ginw * 829 itadmin_mem_dhcp_ginw_new(itadmin_job *job, itadmin_dhcp_group *gr); 830 831 /** Destroy DHCP group in network structure, release memory. 832 @param g Group structure to destroy. 833 */ 834 void 835 itadmin_mem_dhcp_ginw_del(itadmin_dhcp_ginw *g); 836 837 /** Initialize date structure. 838 @param dp Date pointer. 839 */ 840 void 841 itadmin_mem_date_init(itadmin_date *dp); 842 843 /** Copy date structure. 844 @param dp Destination pointer. 845 @param sp Source pointer. 846 */ 847 void 848 itadmin_mem_date_copy(itadmin_date *dp, itadmin_date *sp); 849 850 /** Create a DHCP option structure. 851 @param job Job structure. 852 @param k Key (option name). 853 @param v Option value. 854 @param pk Primary key number from table (unused). 855 @return Valid pointer to new object on success, NULL on error. 856 */ 857 itadmin_dhcp_option * 858 itadmin_mem_dhcp_option_new( 859 itadmin_job *job, 860 char const *k, 861 char const *v, 862 long pk 863 ); 864 865 /** Destroy DHCP option structure, release memory. 866 @param v Option to destroy. 867 */ 868 void 869 itadmin_mem_dhcp_option_del(void *v); 870 871 /** Read data from database. 872 @param job Job structure. 873 @return 1 on success, 0 on error. 874 */ 875 int 876 itadmin_data_read(itadmin_job *job); 877 878 /** Read data from MySQL database. 879 @param job Job structure. 880 @return 1 on success, 0 on error. 881 */ 882 int 883 itadmin_data_mysql_read(itadmin_job *job); 884 885 /** Register a user record. 886 @param job Job structure. 887 @param us_s User short name (login name). 888 @param us_t User title or academic degree. 889 @param us_sn Surname. 890 @param us_fn Family name. 891 @param us_em E-Mail. 892 @param us_ko Cost control ID. 893 @param us_se Organizational unit. 894 @return 1 on success, 0 on error. 895 */ 896 int 897 itadmin_register_user( 898 itadmin_job *job, 899 char const *us_s, 900 char const *us_t, 901 char const *us_sn, 902 char const *us_fn, 903 char const *us_em, 904 char const *us_ko, 905 char const *us_se 906 ); 907 908 /** Register building. 909 @param job Job structure. 910 @param gb_s Short building name. 911 @param gb_l Long building name. 912 @param gb_a1 Address line 1. 913 @param gb_a2 Address line 2. 914 @param gb_a3 Address line 3. 915 @param gb_a4 Address line 4. 916 @param gb_plz Zip code. 917 @param gb_ort City name. 918 @return 1 on success, 0 on error. 919 */ 920 int 921 itadmin_register_building( 922 itadmin_job *job, 923 char const *gb_s, 924 char const *gb_l, 925 char const *gb_a1, 926 char const *gb_a2, 927 char const *gb_a3, 928 char const *gb_a4, 929 char const *gb_plz, 930 char const *gb_ort 931 ); 932 933 /** Register a speed setting. 934 @param job Job structure. 935 @param sn Short name for setting. 936 @param ln Description. 937 @return 1 on success, 0 on error. 938 */ 939 int 940 itadmin_register_speed( 941 itadmin_job *job, 942 char const *sn, 943 char const *ln 944 ); 945 946 /** Register a VLAN. 947 @param job Job structure. 948 @param vl_s Short name for VLAN. 949 @param vl_l Description. 950 @return 1 on success, 0 on error. 951 */ 952 int 953 itadmin_register_vlan(itadmin_job *job, char const *vl_s, char const *vl_l); 954 955 /** Register patch (ethernet socket). 956 @param job Job structure. 957 @param dd_n Patch name. 958 @param sp_s Speed setting name. 959 @param vl_s VLAN short name. 960 @param dd_p Hub port name. 961 @param gb_s Building. 962 @param dd_r Room number/name of patch. 963 @return 1 on success, 0 on error. 964 */ 965 int 966 itadmin_register_patch( 967 itadmin_job *job, 968 char const *dd_n, 969 char const *sp_s, 970 char const *vl_s, 971 char const *dd_p, 972 char const *gb_s, 973 char const *dd_r 974 ); 975 976 /** Register network. 977 @param job Job structure. 978 @param nw_ip IP address. 979 @param nw_ma Network mask. 980 @param nw_gw Gateway. 981 @param nw_bc Broadcast address. 982 @param vl_s VLAN for network. 983 @return 1 on success, 0 on error. 984 */ 985 int 986 itadmin_register_network( 987 itadmin_job *job, 988 char const *nw_ip, 989 char const *nw_ma, 990 char const *nw_gw, 991 char const *nw_bc, 992 char const *vl_s 993 ); 994 995 /** Register DHCP pool. 996 @param job Job structure. 997 @param ips IP start address of pool. 998 @param ipe IP end address of pool. 999 @param nw Network address (may be NULL or empty). 1000 @param alu Flag: Allow unknown clients. 1001 @param dnu Flag: Deny unknown clients. 1002 @param dcn Allowed class name if unknown clients denied. 1003 @return 1 on success, 0 on error. 1004 */ 1005 int 1006 itadmin_register_dhcp_pool( 1007 itadmin_job *job, 1008 char const *ips, 1009 char const *ipe, 1010 char const *nw, 1011 int alu, 1012 int dnu, 1013 char const *dcn 1014 ); 1015 1016 /** Register DHCP class. 1017 @param job Job structure. 1018 @param dcs Short class name. 1019 @param dcl Long class name (description). 1020 @return 1 on success, 0 on error. 1021 */ 1022 int 1023 itadmin_register_dhcp_class(itadmin_job *job,char const *dcs,char const *dcl); 1024 1025 /** Register DHCP group. 1026 @param job Job structure. 1027 @param sn Short name. 1028 @param ln Long name (description). 1029 @return 1 on success, 0 on error. 1030 */ 1031 int 1032 itadmin_register_dhcp_group(itadmin_job *job, char const *sn, char const *ln); 1033 1034 /** Register netgroup. 1035 @param job Job structure. 1036 @param ng_s Short netgroup name. 1037 @param ng_l Long name (description). 1038 @return 1 on success, 0 on error. 1039 */ 1040 int 1041 itadmin_register_netgroup(itadmin_job *job,char const *ng_s,char const *ng_l); 1042 1043 /** Register netgroup dependency. 1044 @param job Job structure. 1045 @param pgn Name of the parent group. 1046 @param cgn Name of the child group. 1047 @return 1 on success, 0 on error. 1048 */ 1049 int 1050 itadmin_register_ngdep(itadmin_job *job, char const *pgn, char const *cgn); 1051 1052 /** Register one host. 1053 @param job Job structure. 1054 @param co_s Short name for computer. 1055 @param us_s Owner / user in charge. 1056 @param co_ip IPv4 address. 1057 @param co_mc MAC address. 1058 @param ng_s Netgroup. 1059 @param co_co Comment for PC. 1060 @param dc_s DHCP class. 1061 @param dg_s DHCP group. 1062 @param dd_n Patch/connector number. 1063 @param gb_s Building. 1064 @param co_r Room number. 1065 @param co_in Inventory ID. 1066 @param co_sn Serial number. 1067 @param co_dd DNS domain name. 1068 @param co_ff Flag: Write FQDN first in /etc/hosts. 1069 @param co_gu Flag: BYOD (bring your own device). 1070 @param co_hi Host ID. 1071 @param co_ex Expiration date. 1072 @param co_nn Flag: Skip host in network documentation. 1073 @param co_na Flag: Skip host for arpwatch. 1074 */ 1075 1076 int 1077 itadmin_register_host( 1078 itadmin_job *job, 1079 char const *co_s, 1080 char const *us_s, 1081 char const *co_ip, 1082 char const *co_mc, 1083 char const *ng_s, 1084 char const *co_co, 1085 char const *dc_s, 1086 char const *dg_s, 1087 char const *dd_n, 1088 char const *gb_s, 1089 char const *co_r, 1090 char const *co_in, 1091 char const *co_sn, 1092 char const *co_dd, 1093 int co_ff, 1094 int co_gu, 1095 char const *co_hi, 1096 itadmin_date *co_ex, 1097 int co_nn, 1098 int co_na 1099 ); 1100 1101 /** Register host name alias. 1102 @param job Job structure. 1103 @param al Alias name. 1104 @param rn Real host name. 1105 @return 1 on success, 0 on error. 1106 */ 1107 int 1108 itadmin_register_alias(itadmin_job *job, char const *al, char const *rn); 1109 1110 /** Register a DHCP option. 1111 @param job Job structure. 1112 @param sct Scope type name. 1113 @param scn Scope name. 1114 @param k Key (option name). 1115 @param v Option value. 1116 @param pk Primary key from database. 1117 @return 1 on success, 0 on error. 1118 */ 1119 int 1120 itadmin_register_dhcp_option( 1121 itadmin_job *job, 1122 char const *sct, 1123 char const *scn, 1124 char const *k, 1125 char const *v, 1126 long pk 1127 ); 1128 1129 /** Check name for empty string or minus. 1130 We have to save the entry if the string pointer is not 1131 NULL and the string is not empty and not a minus. 1132 @param sn String to check. 1133 @return 1 if string must be saved, 0 for ignore. 1134 */ 1135 int 1136 itadmin_register_check_user_name(char const *sn); 1137 1138 /** Check whether we can attempt to convert a string to an IP address. 1139 @param ip String to test. 1140 @return 1 for string with text, 0 for empty string. 1141 */ 1142 int 1143 itadmin_register_check_ip(char const *ip); 1144 1145 /** Register a software manufacturer. 1146 @param job Job structure. 1147 @param sm_s Short name. 1148 @param sm_l Long name. 1149 @return 1 on success, 0 on error. 1150 */ 1151 int 1152 itadmin_register_swman( itadmin_job *job, char const *sm_s, char const *sm_l); 1153 1154 /** Register a software product. 1155 @param job Job structure. 1156 @param sw_s Short software name. 1157 @param sw_l Long software name. 1158 @param sm_s Software manufacturer. 1159 @return 1 on success, 0 on error. 1160 */ 1161 int 1162 itadmin_register_swprod( 1163 itadmin_job *job, 1164 char const *sw_s, 1165 char const *sw_l, 1166 char const *sm_s 1167 ); 1168 /** Register a license type. 1169 @param job Job structure. 1170 @param lt_s Short license type name. 1171 @param lt_l Long name/description of license type. 1172 @param nl Number of licenses (for floating licenses). 1173 */ 1174 int 1175 itadmin_register_lictype( 1176 itadmin_job *job, 1177 char const *lt_s, 1178 char const *lt_l, 1179 int nl 1180 ); 1181 1182 /** Register license. 1183 @param job Job structure. 1184 @param pk Primary key. 1185 @param li_on Order number (purchase process ID). 1186 @param sw_s Software short name. 1187 @param us_s User to which the license is assigned. 1188 @param co_s Computer on which the license is used. 1189 @param lt_s License type. 1190 @param li_no Optional note for the license. 1191 @param li_nd Delivery note number. 1192 @param li_ni Invoice number. 1193 @return 1 on success, 0 on error. 1194 */ 1195 int 1196 itadmin_register_license( 1197 itadmin_job *job, 1198 unsigned long pk, 1199 char const *li_on, 1200 char const *sw_s, 1201 char const *us_s, 1202 char const *co_s, 1203 char const *lt_s, 1204 char const *li_no, 1205 char const *li_nd, 1206 char const *li_ni 1207 ); 1208 1209 /** Compare structures for user. 1210 @param l Left structure. 1211 @param r Right structure, object, or name. 1212 @param cr Comparison criteria 1213 (0=user/user by us, 1=user/name by us, 2=user/user by na+sn+tt+us). 1214 @return Comparison result. 1215 */ 1216 int 1217 itadmin_comp_user(void const *l, void const *r, int cr); 1218 1219 /** Compare structures for buildings. 1220 @param l Left structure. 1221 @param r Right structure, object, or name. 1222 @param cr Comparison criteria 1223 (0=building/building by s, 1=building/name by s). 1224 @return Comparison result. 1225 */ 1226 int 1227 itadmin_comp_building(void const *l, void const *r, int cr); 1228 1229 /** Compare structures for network speed. 1230 @param l Left structure. 1231 @param r Right structure, object, or name. 1232 @param cr Comparison criteria 1233 (0=speed/speed by s, 1=speed/name). 1234 @return Comparison result. 1235 */ 1236 int 1237 itadmin_comp_speed(void const *l, void const *r, int cr); 1238 1239 /** Compare structures for VLAN. 1240 @param l Left structure. 1241 @param r Right structure, object, or name. 1242 @param cr Comparison criteria 1243 (0=vlan/vlan by s, 1=vlan/name by s). 1244 @return Comparison result. 1245 */ 1246 int 1247 itadmin_comp_vlan(void const *l, void const *r, int cr); 1248 1249 /** Compare structures for ethernet socket. 1250 @param l Left structure. 1251 @param r Right structure, object, or name. 1252 @param cr Comparison criteria 1253 (0=socket/socket by s, 1=socket/name). 1254 @return Comparison result. 1255 */ 1256 int 1257 itadmin_comp_connect(void const *l, void const *r, int cr); 1258 1259 /** Compare structures for network. 1260 @param l Left structure. 1261 @param r Right structure, object, or name. 1262 @param cr Comparison criteria 1263 (0=network/network by ip4, 1=network/ipaddress). 1264 @return Comparison result. 1265 */ 1266 int 1267 itadmin_comp_network(void const *l, void const *r, int cr); 1268 1269 /** Compare structures for netgroup. 1270 @param l Left structure. 1271 @param r Right structure, object, or name. 1272 @param cr Comparison criteria 1273 (0=netgroup/netgroup by sn, 1=netgroup/name by sn). 1274 @return Comparison result. 1275 */ 1276 int 1277 itadmin_comp_netgroup(void const *l, void const *r, int cr); 1278 1279 /** Compare structures for DHCP class. 1280 @param l Left structure. 1281 @param r Right structure, object, or name. 1282 @param cr Comparison criteria 1283 (0=class/class by sn, 1=class/name by sn). 1284 @return Comparison result. 1285 */ 1286 int 1287 itadmin_comp_dhcp_class(void const *l, void const *r, int cr); 1288 1289 /** Compare structures for DHCP pool. 1290 @param l Left structure. 1291 @param r Right structure, object, or name. 1292 @param cr Comparison criteria 1293 (0=pool/pool by ip4s, 1=pool/ipaddress). 1294 @return Comparison result. 1295 */ 1296 int 1297 itadmin_comp_dhcp_pool(void const *l, void const *r, int cr); 1298 1299 /** Compare structures for DHCP group. 1300 @param l Left structure. 1301 @param r Right structure, object, or name. 1302 @param cr Comparison criteria 1303 (0=group/group by sn, 1=group/name). 1304 @return Comparison result. 1305 */ 1306 int 1307 itadmin_comp_dhcp_group(void const *l, void const *r, int cr); 1308 1309 /** Compare structures for host 1310 @param l Left structure. 1311 @param r Right structure, object, or name. 1312 @param cr Comparison criteria 1313 (0=host/host by sn, 1=host/name, 2=host/host by ipv4, 3=host/ipaddr). 1314 @return Comparison result. 1315 */ 1316 int 1317 itadmin_comp_host(void const *l, void const *r, int cr); 1318 1319 /** Compare structures for software manufacturer. 1320 @param l Left structure. 1321 @param r Right structure, object, or name. 1322 @param cr Comparison criteria 1323 (0=swman/swman by sn, 1=swman/name). 1324 @return Comparison result. 1325 */ 1326 int 1327 itadmin_comp_swman(void const *l, void const *r, int cr); 1328 1329 /** Compare structures for software product. 1330 @param l Left structure. 1331 @param r Right structure, object, or name. 1332 @param cr Comparison criteria 1333 (0=product/product by sn, 1=product/name, 1334 2=product/product by mn->ln+ln). 1335 @return Comparison result. 1336 */ 1337 int 1338 itadmin_comp_swprod(void const *l, void const *r, int cr); 1339 1340 /** Compare structures for license type. 1341 @param l Left structure. 1342 @param r Right structure, object, or name. 1343 @param cr Comparison criteria 1344 (0=license/license by product). 1345 @return Comparison result. 1346 */ 1347 int 1348 itadmin_comp_lictype(void const *l, void const *r, int cr); 1349 1350 /** Compare structures for license. 1351 @param l Left structure. 1352 @param r Right structure, object, or name. 1353 @param cr Comparison criteria 1354 (0=license/license by pk, 1=license/pk, 2=license/license by product). 1355 @return Comparison result. 1356 */ 1357 int 1358 itadmin_comp_license(void const *l, void const *r, int cr); 1359 1360 /** Compare two licenses within a network. 1361 @param l Left object. 1362 @param r Right object or name. 1363 @param cr Comparison criteria (0=group/group, 1364 1=group/name). 1365 @return Comparison result. 1366 */ 1367 int 1368 itadmin_comp_dhcp_ginw(void const *l, void const *r, int cr); 1369 1370 /** Compare two date structures. 1371 @param l Left object. 1372 @param r Right object. 1373 @return 1 if @arg l is later than @arg r, 0 for equal days, 1374 1 if @arg l is earlier than @arg r. 1375 */ 1376 int 1377 itadmin_comp_date(itadmin_date const *l, itadmin_date const *r); 1378 1379 /** Compare two DHCP options. 1380 @param l Left object. 1381 @param r Right object. 1382 @param cr Comparison criteria (ignored). 1383 @return Comparison result. 1384 */ 1385 int 1386 itadmin_comp_dhcp_option(void const *l, void const *r, int cr); 1387 1388 /** Compare two strings. 1389 @param l Left string. 1390 @param r Right string. 1391 @param cr Comparison criteria (1=case-insensitive, 0=normal). 1392 @return Comparison result. 1393 */ 1394 int 1395 itadmin_comp_string(void const *l, void const *r, int cr); 1396 1397 /** Check whether we have to write network configuration 1398 and documentation. 1399 @param job Job structure. 1400 @return 1 for yes, 0 for no. 1401 */ 1402 int 1403 itadmin_job_do_network(itadmin_job *job); 1404 1405 /** Check whether we have to write a dhcpd.conf file. 1406 @param job Job structure. 1407 @return 1 for yes, 0 for no. 1408 */ 1409 int 1410 itadmin_job_do_dhcp(itadmin_job *job); 1411 1412 /** Check whether we have to write a license report. 1413 @param job Job structure. 1414 @return 1 for yes, 0 for no. 1415 */ 1416 int 1417 itadmin_job_do_licenses(itadmin_job *job); 1418 1419 /** Convert string yyyy-mm-dd to date structure. 1420 @param job Job structure. 1421 @param dp Destination pointer. 1422 @param str Source text. 1423 @return 1 on success, 0 on error. 1424 */ 1425 int 1426 itadmin_tool_convert_date(itadmin_job *job, itadmin_date *dp, char const *str); 1427 1428 /** Write IPv4 address to file. 1429 @param df Destination file. 1430 @param ipv4 Address to write. 1431 */ 1432 void 1433 itadmin_tool_write_ip(FILE *df, unsigned long ipv4); 1434 1435 /** Write IPv4 address to stream. 1436 @param os Output stream. 1437 @param ipv4 Address to write. 1438 */ 1439 void 1440 itadmin_tool_stream_ip(dk3_stream_t *os, unsigned long ipv4); 1441 1442 /** Write user name short to LaTeX output. 1443 @param job Job structure. 1444 @param os Output stream. 1445 @param user User to write. 1446 */ 1447 void 1448 itadmin_tool_write_user_latex_short( 1449 itadmin_job *job, 1450 dk3_stream_t *os, 1451 itadmin_user *user 1452 ); 1453 1454 /** Write user name long to LaTeX output. 1455 @param job Job structure. 1456 @param os Output stream. 1457 @param user User to write. 1458 */ 1459 void 1460 itadmin_tool_write_user_latex_long( 1461 itadmin_job *job, 1462 dk3_stream_t *os, 1463 itadmin_user *user 1464 ); 1465 1466 /** Write the section header in the table. 1467 @param job Job structure. 1468 @param os Output stream. 1469 @param kwi Keyword index. 1470 */ 1471 void 1472 itadmin_tool_table_section_header( 1473 itadmin_job *job, 1474 dk3_stream_t *os, 1475 size_t kwi 1476 ); 1477 1478 /** Start a table line. 1479 @param job Job structure. 1480 @param os Output stream. 1481 @param kwi Keyword index in localized messages. 1482 */ 1483 void 1484 itadmin_tool_table_line_start( 1485 itadmin_job *job, 1486 dk3_stream_t *os, 1487 size_t kwi 1488 ); 1489 1490 /** Separate two items in a table. 1491 @param os Output stream. 1492 */ 1493 void 1494 itadmin_tool_table_line_sep_rows( 1495 dk3_stream_t *os 1496 ); 1497 1498 /** Finish a table line. 1499 @param job Job structure. 1500 @param os Output stream. 1501 @param pb Flag: Allow page break here. 1502 */ 1503 void 1504 itadmin_tool_table_line_finish( 1505 dk3_stream_t *os, 1506 int pb 1507 ); 1508 1509 /** Create empty table field. 1510 @param job Job structure. 1511 @param os Output stream. 1512 @param nu Flag: Write notification for missing value. 1513 */ 1514 void 1515 itadmin_tool_table_line_no_data( 1516 itadmin_job *job, 1517 dk3_stream_t *os, 1518 int nu 1519 ); 1520 1521 /** Write one detail table line. 1522 @param job Job structure. 1523 @param os Output stream. 1524 @param kwi Keyword index for option name. 1525 @param det Details to write. 1526 @param nu Flag: Write a note about unknown values. 1527 @param pb Flag: Allow page break after line. 1528 */ 1529 void 1530 itadmin_tool_table_line( 1531 itadmin_job *job, 1532 dk3_stream_t *os, 1533 size_t kwi, 1534 char const *det, 1535 int nu, 1536 int pb 1537 ); 1538 1539 /** Write a table line consisting of two values. 1540 @param job Job structure. 1541 @param os Output stream. 1542 @param key Key. 1543 @param val Value. 1544 @param fb Flag: Key in bold. 1545 @param pb Flag: Allow page break. 1546 */ 1547 void 1548 itadmin_tool_table_values( 1549 itadmin_job *job, 1550 dk3_stream_t *os, 1551 char const *key, 1552 char const *val, 1553 int fb, 1554 int pb 1555 ); 1556 1557 /** Check whether a host is owned by a user. 1558 @param us User. 1559 @param co Host. 1560 @return 1 if the host is owned by the user, 0 otherwise. 1561 */ 1562 int 1563 itadmin_tool_check_same_user(itadmin_user *us, itadmin_host *co); 1564 1565 /** Write a section of text to output stream. 1566 @param job Job structure. 1567 @param os Output stream. 1568 @param sect Text section to write. 1569 */ 1570 void 1571 itadmin_tool_write_section( 1572 dk3_stream_t *os, 1573 char const * const *sect 1574 ); 1575 1576 /** Write log message of one part. 1577 @param job Job structure. 1578 @param ll Log level. 1579 @param i Index of message text in localized messages array. 1580 */ 1581 void 1582 itadmin_tool_log_1( 1583 itadmin_job *job, 1584 int ll, 1585 size_t i 1586 ); 1587 1588 /** Write log message of three parts. 1589 @param job Job structure. 1590 @param ll Log level. 1591 @param i1 Index of first message text in localized messages array. 1592 @param i2 Index of third text part in localized messages array. 1593 @param msg Variable message text, second text part. 1594 */ 1595 void 1596 itadmin_tool_log_utf8_3( 1597 itadmin_job *job, 1598 int ll, 1599 size_t i1, 1600 size_t i2, 1601 char const *msg 1602 ); 1603 1604 /** Write log message of five parts. 1605 @param job Job structure. 1606 @param ll Log level. 1607 @param i1 Index of first message text in localized messages array. 1608 @param i2 Index of third text part in localized messages array. 1609 @param i3 Index of fifth text part in localized messages array. 1610 @param msg1 First variable message text, second text part. 1611 @param msg2 Second variable messagetext, fourth text part. 1612 */ 1613 void 1614 itadmin_tool_log_utf8_5( 1615 itadmin_job *job, 1616 int ll, 1617 size_t i1, 1618 size_t i2, 1619 size_t i3, 1620 char const *msg1, 1621 char const *msg2 1622 ); 1623 1624 /** Write log message of three parts. 1625 @param job Job structure. 1626 @param ll Log level. 1627 @param i1 Index of first constant message part. 1628 @param i2 Index of third message part. 1629 @param pk Primary key as numeric value. 1630 */ 1631 void 1632 itadmin_tool_log_pk_3( 1633 itadmin_job *job, 1634 int ll, 1635 size_t i1, 1636 size_t i2, 1637 unsigned long pk 1638 ); 1639 1640 /** Write log message of five parts. 1641 @param job Job structure. 1642 @param ll Log level. 1643 @param i1 Index of first constant message part. 1644 @param i2 Index of third message part. 1645 @param i3 Index of fifth message part. 1646 @param pk Primary key as numeric value. 1647 @param msg Variable message part. 1648 */ 1649 void 1650 itadmin_tool_log_pk_5( 1651 itadmin_job *job, 1652 int ll, 1653 size_t i1, 1654 size_t i2, 1655 size_t i3, 1656 unsigned long pk, 1657 char const *msg 1658 ); 1659 1660 /** Write IPv4 address to buffer. 1661 @param bu Destination buffer, at least 16 bytes long. 1662 @param ip IP address. 1663 */ 1664 void 1665 itadmin_tool_ip_to_buffer(char *bu, unsigned long ip); 1666 1667 /** Write hosts file. 1668 @param job Job structure. 1669 @return 1 on success, 0 on error. 1670 */ 1671 int 1672 itadmin_hosts_output(itadmin_job *job); 1673 1674 /** Write hosts.ldif file. 1675 @param job Job structure. 1676 @return 1 on success, 0 on error. 1677 */ 1678 int 1679 itadmin_hosts_ldif_output(itadmin_job *job); 1680 1681 /** Write ethers-by-ip and ethers-by-mac files. 1682 @param job Job structure. 1683 @return 1 on success, 0 on error. 1684 */ 1685 int 1686 itadmin_ethers_output(itadmin_job *job); 1687 1688 /** Write ethers.ldif file. 1689 @param job Job structure. 1690 @return 1 on success, 0 on error. 1691 */ 1692 int 1693 itadmin_ethers_ldif_output(itadmin_job *job); 1694 1695 /** Expand netgroup dependencies. 1696 @param job Job structure. 1697 @return 1 on success, 0 on error. 1698 */ 1699 int 1700 itadmin_netgroup_expand(itadmin_job *job); 1701 1702 /** Check whether a host is a member of a netgroup. 1703 @param job Job structure. 1704 @param netgroup Netgroup. 1705 @param host Host. 1706 @return 0 for no member, 1 for indirect member, 2 for direct member. 1707 */ 1708 int 1709 itadmin_netgroup_host_member( 1710 itadmin_job *job, 1711 itadmin_netgroup *netgroup, 1712 itadmin_host *host 1713 ); 1714 1715 /** Write netgroup.ldif file. 1716 @param job Job structure. 1717 @return 1 on success, 0 on error. 1718 */ 1719 int 1720 itadmin_netgroup_ldif_output(itadmin_job *job); 1721 1722 /** Write dhcpd.conf file. 1723 @param job Job structure. 1724 @return 1 on success, 0 on error. 1725 */ 1726 int 1727 itadmin_dhcpd_conf_output(itadmin_job *job); 1728 1729 /** Write network documentation file. 1730 @param job Job structure. 1731 @return 1 on success, 0 on error. 1732 */ 1733 int 1734 itadmin_netdocu(itadmin_job *job); 1735 1736 /** Write license report. 1737 @param job Job structure. 1738 @return 1 on success, 0 on error. 1739 */ 1740 int 1741 itadmin_license_report(itadmin_job *job); 1742 1743 #ifdef __cplusplus 1744 } 1745 #endif 1746 1747 1748 #endif 1749