1 /* 2 * CDDL HEADER START 3 * 4 * The contents of this file are subject to the terms of the 5 * Common Development and Distribution License, Version 1.0 only 6 * (the "License"). You may not use this file except in compliance 7 * with the License. 8 * 9 * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE 10 * or http://www.opensolaris.org/os/licensing. 11 * See the License for the specific language governing permissions 12 * and limitations under the License. 13 * 14 * When distributing Covered Code, include this CDDL HEADER in each 15 * file and include the License file at usr/src/OPENSOLARIS.LICENSE. 16 * If applicable, add the following below this CDDL HEADER, with the 17 * fields enclosed by brackets "[]" replaced with your own identifying 18 * information: Portions Copyright [yyyy] [name of copyright owner] 19 * 20 * CDDL HEADER END 21 */ 22 /* 23 * Copyright 2003 Sun Microsystems, Inc. All rights reserved. 24 * Use is subject to license terms. 25 */ 26 27 #ifndef _LIBFSMGT_H 28 #define _LIBFSMGT_H 29 30 #ifdef __cplusplus 31 extern "C" { 32 #endif 33 34 #include <stdio.h> 35 #include <sys/param.h> 36 #include <nfs/nfs_sec.h> 37 #include <sys/utsname.h> 38 39 #define DFSTYPES "/etc/dfs/fstypes" /* dfs list */ 40 #define DFSTAB "/etc/dfs/dfstab" /* dfs list */ 41 #define BUFSIZE 65536 42 #define LINESZ 2048 43 44 typedef void *fs_dfstab_entry_t; 45 46 /* 47 * Public data type declarations 48 */ 49 50 /* 51 * Represents a list of the /etc/vfstab entries 52 */ 53 typedef struct mount_default_list { 54 struct mount_default_list *next; 55 char *resource; 56 char *fsckdevice; 57 char *mountp; 58 char *fstype; 59 char *fsckpass; 60 char *mountatboot; 61 char *mntopts; 62 } fs_mntdefaults_t; 63 64 /* 65 * Represents a list of /etc/mnttab entries 66 */ 67 typedef struct mount_list { 68 struct mount_list *next; 69 char *resource; 70 char *mountp; 71 char *fstype; 72 char *mntopts; 73 char *time; 74 uint_t major; 75 uint_t minor; 76 boolean_t overlayed; 77 } fs_mntlist_t; 78 79 /* 80 * Represents a /etc/dfs/sharetab entry 81 */ 82 typedef struct share_list { 83 struct share_list *next; 84 char *path; 85 char *resource; 86 char *fstype; 87 char *options; 88 char *description; 89 } fs_sharelist_t; 90 91 /* 92 * Represents a list of /etc/mnttab entries with associated 93 * information from kstat. 94 */ 95 typedef struct nfs_mntlist { 96 struct nfs_mntlist *next; 97 char nml_curpath[MAXPATHLEN]; /* current path on */ 98 /* server */ 99 char nml_curserver[SYS_NMLN]; /* current server */ 100 char **nml_failoverlist; /* The list of servers */ 101 /* and corresponding */ 102 /* paths for failover. */ 103 char *nml_fstype; /* filesystem type */ 104 char *nml_mntopts; /* mount options */ 105 char *nml_mountp; /* mount point */ 106 char *nml_resource; /* mnttab.mnt_special */ 107 char nml_proto[KNC_STRSIZE]; /* transfer protocol */ 108 char *nml_securitymode; /* security mode name */ 109 char *nml_time; /* time mounted */ 110 int nml_failovercount; /* number of failover servers */ 111 int nml_retrans; /* times to retry request */ 112 int nml_timeo; /* inital timeout in 10th sec */ 113 ulong_t nml_fsid; /* filesystem ID */ 114 uint_t nml_acdirmax; /* max time to hold cached dir attr */ 115 uint_t nml_acdirmin; /* min time to hold cached dir attr */ 116 uint_t nml_acregmax; /* max time to hold cached file attr */ 117 uint_t nml_acregmin; /* min time to hold cached file attr */ 118 uint32_t nml_curread; /* current read size */ 119 uint32_t nml_curwrite; /* current write size */ 120 uint32_t nml_vers; /* nfs version */ 121 boolean_t nml_directio; /* force direct IO */ 122 boolean_t nml_grpid; /* group id inherited from parent */ 123 boolean_t nml_hard; /* hard or soft mount */ 124 boolean_t nml_intr; /* Key board intrupts */ 125 boolean_t nml_noac; /* no ata and attribute caching */ 126 boolean_t nml_nocto; /* no close-to-open consistency */ 127 boolean_t nml_overlayed; /* Is filesystem overlayed */ 128 boolean_t nml_xattr; /* allow extended attributes */ 129 } nfs_mntlist_t; 130 131 /* 132 * Command execution interface method declarations 133 */ 134 135 /* 136 * Method: cmd_execute_command 137 * 138 * Description: Executes the command passed into the function as if it was 139 * the input to a shell and returns the separated stdout and stderr messages 140 * which can be accessed by the client via the returned file descriptors using 141 * the cmd_retrieve_string method or one of their own methods. 142 * 143 * Parameters: 144 * char * - The command to execute. Expected in the format of a shell command. 145 * int * - Upon return from the function, this is the file descriptor that can 146 * be used to access the output from the command to stdout. 147 * int * - Upon return from the function, this is the file descriptor that can 148 * be used to access the output from the command to stderr. 149 * 150 * Return: 151 * Returns 0 (zero). 152 * Supposed to be the integer representing the exit value of the command 153 * executed, but due to the way blocking on file descriptors works, it will 154 * only return a 0 (zero) value. The reason: The producer, in this case the 155 * command being executed, will block when a certain amount of data is written 156 * to the file descriptor and will not be able to write any more data until the 157 * consumer reads from the file descriptor so since we are not reading in the 158 * data from the file descriptors in this method and we are allowing the client 159 * do what they want with the data we can't wait until the command is finished 160 * executing to get the return value. 161 */ 162 int cmd_execute_command(char *cmd, int *output_filedes, int *error_filedes); 163 164 /* 165 * Method: cmd_execute_command_and_retrieve_string 166 * 167 * Description: Executes the command passed into the function as if it was the 168 * input to a shell and returns the output to stderr and stdout as a string as 169 * it would appear in the shell (stdout and stderr are mixed). 170 * 171 * Parameters: 172 * char * - The command to execute. Expected in the format of a shell command. 173 * int * - Upon return from the function, this should be used to determine if an 174 * error occurred in the execution of the command and the retrieval of 175 * output data from the command. 176 * data from the command. 177 * 178 * Return: 179 * The output to stdout and stderr created by the execution of the passed in 180 * command. 181 */ 182 char *cmd_execute_command_and_retrieve_string(char *cmd, int *errp); 183 184 /* 185 * Method: cmd_retrieve_string 186 * 187 * Description: Retrieves the data from the passed in file descriptor and 188 * returns it to the caller in the form of a string. 189 * 190 * Parameters: 191 * int - The file descriptor to be read from. 192 * int * - Upon return from the function, this should be the used to determine 193 * if an error occurred in the retrieval of the data from the file 194 * descriptor. 195 * A non-zero value represents the occurrence of an error. 196 * 197 * Return: 198 * The data from the file descriptor in the form of a string. 199 * NOTE: The caller must free the space allocated (with calloc) for the return 200 * value using free(). 201 */ 202 char *cmd_retrieve_string(int filedes, int *errp); 203 204 /* 205 * File interface method declarations 206 */ 207 208 /* 209 * NOTE: the caller of this function is responsible for freeing any 210 * memory allocated by calling fileutil_free_string_array() 211 * 212 * Method: fileutil_add_string_to_array 213 * 214 * Description: Adds one line to the file image string array 215 * 216 * Parameters: 217 * char ***string_array - pointer array of strings holding the lines 218 * for the new file 219 * char *line - the line to be added to the new file 220 * int *count - the number of elements in the string array 221 * int *err - error pointer for returning any errors encountered 222 * 223 * Return: 224 * B_TRUE on success, B_FALSE on failure. 225 * 226 * Note: 227 * On success string_array is set to the new array of strings. On failure 228 * string_array is unchanged. 229 */ 230 boolean_t fileutil_add_string_to_array(char ***, char *, int *, int *); 231 232 /* 233 * Method: fileutil_free_string_array 234 * 235 * Description: Frees the space allocated to a string array. 236 * 237 * Parameters: 238 * char ** - is the array to be freed 239 * int - the number of elements in the array 240 */ 241 void fileutil_free_string_array(char **, int); 242 243 /* 244 * Method: fileutil_get_cmd_from_string 245 * 246 * Description: Returns a string containing a line with all comments and 247 * trailing white space removed. 248 * 249 * Parameters: 250 * char *input_stringp - the line to remove all coments and trailing white 251 * space. 252 * 253 * Note: The memory allocated for the returned string must be freed by the 254 * caller of fileutil_get_cmd_from_string(). 255 */ 256 char *fileutil_get_cmd_from_string(char *input_stringp); 257 258 /* 259 * Method: fileutil_get_first_column_data 260 * 261 * Description: Returns a string array which is filled with the data in the 262 * first column of the lines in a table formatted file. 263 * Examples of table formatted files include: /etc/netcofig, /etc/nfssec.conf 264 * 265 * Parameters: 266 * FILE* - The file pointer of the table formatted file to get data from. 267 * int* - will be filled with the number of elements in the array that is passed 268 * back. 269 * int* - error pointer. If an error occurs this will be non-zero upon return 270 * the function. 271 * 272 * Returns: 273 * Two-dimensional array of characters (string array). Each element in the 274 * array is the first column data of each row in the table. 275 */ 276 char **fileutil_get_first_column_data(FILE *, int *, int *); 277 278 /* 279 * Method: fileutil_getfs 280 * 281 * Description: Convenience function for retrieving the default remote file 282 * system type from /etc/dfs/fstypes. 283 * 284 * Parameters: 285 * FILE * - The /etc/dfs/fstypes file pointer. 286 * 287 * Return: 288 * The default remote filesystem type. 289 */ 290 char *fileutil_getfs(FILE *); 291 292 /* 293 * Method: fileutil_getline 294 * 295 * Description: Convenience function for retrieving the next line from a file. 296 * Commented lines are not returned and comments at the end of 297 * a line are removed. 298 * 299 * Parameters: 300 * FILE * - The file pointer to a file that has been opened for reading. 301 * char * - The line retrived from the file will be placed in this string. 302 * int * - error pointer - If an error occurs this will be non-zero upon 303 * return from the function. 304 * 305 * Return: 306 * If successfull the line retrieved from the file will be returned. 307 * Otherwise NULL be be returned. 308 */ 309 char *fileutil_getline(FILE *, char *, int); 310 311 /* 312 * Mount defaults (/etc/vfstab) interface method declarations 313 */ 314 /* 315 * Method: fs_add_mount_default 316 * 317 * Description: Adds an entry to vfstab based on the fs_mntdefaults_t 318 * structure that is passed in. 319 * 320 * Parameters: 321 * fs_mntdefaults_t *newp - The structure containing the mount information 322 * to be placed in vfstab. 323 * int *errp - error pointer - If an error occurs this will be non-zero upon 324 * return from the function. 325 * 326 * Return: 327 * If successful a pointer to a list containing all the present vfstab 328 * entries is returned. On failure NULL is returned. 329 */ 330 fs_mntdefaults_t *fs_add_mount_default(fs_mntdefaults_t *, int *); 331 332 /* 333 * Method: fs_check_for_duplicate_DFStab_paths 334 * 335 * Description: Checks dfstab for duplicate paths and returns the number of 336 * times the path passed in was encountered. The functon is used to help make 337 * sure a path is only listed in dfstab once. 338 * 339 * Parameters: 340 * char *path - the path to check for 341 * int *err - error pointer - If an error occurs this will be non-zero upon 342 * return from the function. 343 * 344 * Return: 345 * The number of times the specified path is encountered in dfstab. 346 */ 347 int fs_check_for_duplicate_DFStab_paths(char *path, int *err); 348 349 /* 350 * Method: fs_del_mount_default_ent 351 * 352 * Description: Deletes the specified vfstab entry from the vfstab file. 353 * 354 * Parameters: 355 * fs_mntdefaults_t *old_vfstab_ent - The mount information that corresponds 356 * to the vfstab entry to be deleted. 357 * int *errp - error pointer - If an error occurs this will be non-zero upon 358 * return from the function. 359 * 360 * Return: 361 * If successful a pointer to a list containing all the changed vfstab 362 * entries is returned. On failure NULL is returned. 363 */ 364 fs_mntdefaults_t *fs_del_mount_default_ent(fs_mntdefaults_t *, int *); 365 366 /* 367 * Method: fs_edit_mount_defaults 368 * 369 * Description: Edits the specified vfstab entry with the new mount 370 * information passed in. 371 * 372 * Parameters: 373 * fs_mntdefaults_t *old_vfstab_ent - The old vfstab entry that is to be edited. 374 * fs_mntdefaults_t *new_vfstab_ent - The new vfstab entry information. 375 * int *errp - error pointer - If an error occurs this will be non-zero upon 376 * return from the function 377 * 378 * Return: 379 */ 380 fs_mntdefaults_t *fs_edit_mount_defaults(fs_mntdefaults_t *, 381 fs_mntdefaults_t *, int *); 382 383 /* 384 * Method: fs_free_mntdefaults_list 385 * 386 * Description: Frees the memory used when a fs_mntdefaults_t structure 387 * is populated. 388 * 389 * Parameters: 390 * fs_mntdefaults_t *headp - The pointer to the first element in the list 391 * of mntdefault structures. 392 */ 393 void fs_free_mntdefaults_list(fs_mntdefaults_t *headp); 394 395 396 /* 397 * Method: fs_get_filtered_mount_defaults 398 * 399 * Description: Retrieves vfstab entries based in the fields in the 400 * fs_mntdefaults_t structure passed in. The fields that are not to 401 * be used in the filter will be set to NULL. 402 * 403 * Parameters: 404 * fs_mntdefaults_t *filter - The structure containing the fields to be 405 * used for the filter. 406 * int *errp - error pointer - If an error occurs this will be non-zero upon 407 * return from the function 408 * 409 * Return: 410 * The list of all vfstab entries meeting the filter criteria are returned. 411 * On failure NULL is returned. 412 */ 413 fs_mntdefaults_t *fs_get_filtered_mount_defaults( 414 fs_mntdefaults_t *filter, int *errp); 415 416 /* 417 * Method: fs_get_mount_defaults 418 * 419 * Description: Retrieves vfstab entries and returns a list of 420 * fs_mntdefaults_t structures. 421 * 422 * Parameters: 423 * int *errp - error pointer - If an error occurs this will be non-zero upon 424 * return from the function 425 * 426 * Return: 427 * fs_mntdefaults_t * - Returns a list of all vfstab entries. 428 */ 429 fs_mntdefaults_t *fs_get_mount_defaults(int *errp); 430 431 /* 432 * Mount (/etc/mnttab) interface method declarations 433 */ 434 /* 435 * Method: fs_free_mount_list 436 * 437 * Description: Frees the mount list created when retrieving mnttab entries. 438 * 439 * Parameters: 440 * fs_mntlist_t *headp - The mount list to be freed. 441 */ 442 void fs_free_mount_list(fs_mntlist_t *mnt_list); 443 444 /* 445 * Method: fs_get_availablesize 446 * 447 * Description: Calculates the total size available on the filesystem. 448 * 449 * Parameters: 450 * char *mntpnt - The mount point to use for gathering the stat information 451 * int *errp - error pointer - If an error occurs this will be non-zero upon 452 * return from the function 453 * 454 * Return: 455 * The total size available on the filesystem. 456 */ 457 unsigned long long fs_get_availablesize(char *mntpnt, int *errp); 458 459 /* 460 * Method: fs_get_avail_for_nonsuperuser_size 461 * 462 * Description: Calculates the available space on the filesystem for 463 * nonsuperusers. 464 * 465 * Parameters: 466 * char *mntpnt - The mount point for the filesystem. 467 * int *errp - error pointer - If an error occurs this will be non-zero upon 468 * return from the function 469 * 470 * Return: 471 * The available space for nonsuperusers. 472 * On failure NULL is returned. 473 */ 474 unsigned long long fs_get_avail_for_nonsuperuser_size(char *mntpnt, 475 int *errp); 476 477 /* 478 * Method: fs_get_blocksize 479 * 480 * Description: Retrieves the preferred filesystem block size. 481 * 482 * Parameters: 483 * char *mntpnt - The mount point for the filesystem. 484 * int *errp - error pointer - If an error occurs this will be non-zero upon 485 * return from the function 486 * 487 * Return: 488 * Returns the preferred filesystem block size. 489 * On failure NULL is returned. 490 */ 491 492 unsigned long long fs_get_blocksize(char *mntpnt, int *errp); 493 494 /* 495 * Method: fs_get_filtered_mount_list 496 * 497 * Description: Can be used to filter mounts only by the following mount 498 * attributes or a mixture of them: 499 * 1.) resource 500 * 2.) mount point 501 * 3.) mount option string 502 * 4.) time mounted 503 * 504 * Parameters: 505 * char *resource - The name of the resource to be mounted 506 * char *mountp - The pathname of the directory on which the filesystem 507 * is mounted 508 * char *mntopts - The mount options 509 * char *time - The time at which the filesystem was mounted 510 * boolean_t find_overlays - Flag used to turn on overlay checking 511 * int *errp - error pointer - If an error occurs this will be non-zero upon 512 * return from the function 513 * 514 * Return: 515 * The list of all mnttab entries meeting the filter criteria are returned. 516 * On failure NULL is returned. 517 */ 518 fs_mntlist_t *fs_get_filtered_mount_list(char *resource, 519 char *mountp, char *fstype, char *mntopts, 520 char *time, boolean_t find_overlays, 521 int *errp); 522 523 /* 524 * Method: fs_get_fragsize 525 * 526 * Description: Determines the fundamental filesystem block size. 527 * 528 * Parameters: 529 * char *mntpnt - The mount point for the filesystem. 530 * int *errp - error pointer - If an error occurs this will be non-zero upon 531 * return from the function 532 * 533 * Return: 534 * Returns the fundamental filesystem block size. 535 * On failure NULL is returned. 536 */ 537 unsigned long fs_get_fragsize(char *mntpnt, int *errp); 538 539 /* 540 * Method: fs_get_maxfilenamelen 541 * 542 * Description: Determines the maximum file name length for the filesystem. 543 * 544 * Parameters: 545 * char *mntpnt - The mount point for the filesystem. 546 * int *errp - error pointer - If an error occurs this will be non-zero upon 547 * return from the function 548 * 549 * Return: 550 * Returns the maximum file name length for the specified filesystem. 551 * On failure NULL is returned. 552 */ 553 unsigned long fs_get_maxfilenamelen(char *mntpnt, int *errp); 554 555 /* 556 * Method: fs_get_mounts_by_mntopt 557 * 558 * Description: Returns only mounts with the specified mount option set. 559 * 560 * Parameters: 561 * char *mntopt - The mount option used for filtering mounts 562 * boolean_t find_overlays - Flag used to turn on overlay checking 563 * int *errp - error pointer - If an error occurs this will be non-zero upon 564 * return from the function 565 * 566 * Return: 567 * Returns the list of all mnttab entries with the matching mount option. 568 * On failure NULL is returned. 569 */ 570 fs_mntlist_t *fs_get_mounts_by_mntopt(char *mntopt, 571 boolean_t find_overlays, int *errp); 572 573 /* 574 * Method: fs_get_mount_list 575 * 576 * Description: Returns a list of all mounts in mnttab 577 * 578 * Parameters: 579 * char *mntpnt - The mount point for the filesystem 580 * boolean_t find_overlays - Flag used to turn on overlay checking 581 * int *errp - error pointer - If an error occurs this will be non-zero upon 582 * return from the function 583 * 584 * Return: 585 * Returns the list of all mounts and associated mount information for mounts 586 * listed in mnttab. On failure NULL is returned. 587 */ 588 fs_mntlist_t *fs_get_mount_list(boolean_t find_overlays, int *errp); 589 590 /* 591 * Method: fs_get_totalsize 592 * 593 * Description: Determines the total size of the filesystem using the 594 * total number of blocks and the block size. 595 * 596 * Parameters: 597 * char *mntpnt - The mount point for the filesystem 598 * int *errp - error pointer - If an error occurs this will be non-zero upon 599 * return from the function 600 * 601 * Return: 602 * Returns the total size of the filesystem. 603 * On failure NULL is returned. 604 */ 605 unsigned long long fs_get_totalsize(char *mntpnt, int *errp); 606 607 /* 608 * Method: fs_get_usedsize 609 * 610 * Description: Calculates the size of the used portion of the filesystem. 611 * 612 * Parameters: 613 * char *mntpnt - The mount point for the filesystem 614 * int *errp - error pointer - If an error occurs this will be non-zero upon 615 * return from the function 616 * 617 * Return: 618 * Returns the size of the the used portion of the filesystem. 619 * On failure NULL is returned. 620 */ 621 unsigned long long fs_get_usedsize(char *mntpnt, int *errp); 622 623 /* 624 * Method: fs_is_readonly 625 * 626 * Description: Checks the filesystem flags to see if the filesystem is 627 * readonly. 628 * 629 * Parameters: 630 * char *mntpnt - The mount point for the filesystem 631 * int *errp - error pointer - If an error occurs this will be non-zero upon 632 * return from the function 633 * 634 * Return: 635 * Returns B_TRUE if the readonly flag is set and B_FALSE if not. 636 * On error the error pointer is set to errno. 637 */ 638 boolean_t fs_is_readonly(char *mntpnt, int *errp); 639 640 /* 641 * Method: fs_parse_optlist_for_option 642 * 643 * Description: 644 * This method will parse the given comma delimited option list (optlist) for 645 * the option passed into the function. If the option (opt) to search for 646 * is one that sets a value such as onerror=, the value to the right of the "=" 647 * character will be returned from the function. This function expects the 648 * opt parameter to have the "=" character appended when searching for options 649 * which set a value. 650 * 651 * Parameters: 652 * char *optlist - The option string to be parsed 653 * char *opt - The option to search for 654 * int *errp - error pointer - If an error occurs this will be non-zero upon 655 * return from the function 656 * 657 * Return: 658 * Returns the option as found in the option list. 659 * If the option is not found NULL is returned. 660 * On error NULL is returned and the error pointer is set to errno. 661 */ 662 char *fs_parse_optlist_for_option(char *optlist, char *opt, 663 int *errp); 664 665 /* 666 * Share (/etc/dfs/sharetab) interface method declarations 667 */ 668 /* 669 * Method: fs_free_share_list 670 * 671 * Description: Used to free populated fs_sharelist_t structures 672 * 673 * Parameters: 674 * fs_sharelist_t *headp - the pointer to the first element in the list. 675 */ 676 void fs_free_share_list(fs_sharelist_t *share_list); 677 678 /* 679 * Method: fs_get_share_list 680 * 681 * Description: Gets a list of the shares on the system from /etc/dfs/sharetab 682 * 683 * Parameters: 684 * int *errp - error pointer - If an error occurs this will be non-zero upon 685 * return from the function 686 * 687 * Return: 688 * Returns a list of fs_sharelist_t structures containing all of the shares 689 * from sharetab. 690 * On error NULL is returned and errp is set to errno. 691 */ 692 fs_sharelist_t *fs_get_share_list(int *errp); 693 694 /* 695 * Method: fs_parse_opts_for_sec_modes 696 * 697 * Description: Parses the option string for security modes and returns 698 * an array of strings containing all modes. 699 * 700 * Parameters: 701 * char * - options string to be parsed. 702 * int * - count of the number of modes found. 703 * int * - error code. 704 * 705 * Return: 706 * Returns an array of string containing all security opts listed in the 707 * passed in option string. On error NULL is returned. 708 */ 709 char **fs_parse_opts_for_sec_modes(char *, int *, int *); 710 711 /* 712 * Method: fs_create_array_from_accesslist 713 * 714 * Description: Takes the colon seperated access list parses the list 715 * into an array containing all the elements of the list. 716 * The array created is returned and count is set to the 717 * number of elements in the array. 718 * 719 * Parameters: 720 * char *access_list - The string containing the colon sperated access list. 721 * int *count - Will contain the number of elements in the array. 722 * int *err - any errors encountered. 723 */ 724 char **fs_create_array_from_accesslist(char *access_list, int *count, int *err); 725 726 /* 727 * FS dfstab (/etc/dfs/dfstab) interface method declarations 728 */ 729 730 /* 731 * Method: fs_add_DFStab_ent 732 * 733 * Description: Adds an entry to dfstab and to the list of dfstab 734 * entries. Returns a pointer to the head of the dfstab entry list. 735 * 736 * Parameters: 737 * char *cmd - the share command to be added to dfstab 738 * int *errp - error pointer - If an error occurs this will be non-zero upon 739 * return from the function 740 * 741 * Return: 742 * Returns the pointer to the updated dfstab entry list. 743 */ 744 fs_dfstab_entry_t fs_add_DFStab_ent(char *, int *); 745 746 /* 747 * Method: fs_del_DFStab_ent 748 * 749 * Description: Deletes an entry from dfstab and from the list of 750 * dfstab entries. 751 * 752 * Parameters: 753 * char *del_cmd - The share command to be removed 754 * int *errp - error pointer - If an error occurs this will be non-zero upon 755 * return from the function 756 * 757 * Return: 758 * Returns the pointer to the updated dfstab entry list. 759 */ 760 fs_dfstab_entry_t fs_del_DFStab_ent(char *, int *); 761 762 /* 763 * NOTE: the caller of this function is responsible for freeing any 764 * memory allocated by calling fs_free_DFStab_ents() 765 * 766 * Method: fs_edit_DFStab_ent 767 * 768 * Description: Changes the specified line in dfstab to match the second 769 * string passed in. 770 * 771 * Parameters: 772 * char *old_cmd - The share command that will be changed. 773 * char *new_cmd - The share command that will replace old_cmd. 774 * int *errp - error pointer - If an error occurs this will be non-zero upon 775 * return from the function 776 * 777 * Return: 778 * Returns the pointer to the updated dfstab entry list. 779 */ 780 fs_dfstab_entry_t fs_edit_DFStab_ent(char *, char *, int *); 781 782 /* 783 * Method: fs_free_DFStab_ents 784 * 785 * Description: Frees the dfstab entry list. 786 * 787 * Parameters: 788 * fs_dfstab_entry_t list - The pointer to the dfstab entry list. 789 */ 790 void fs_free_DFStab_ents(fs_dfstab_entry_t); 791 792 /* 793 * NOTE: the caller of this function is responsible for freeing any 794 * memory allocated by calling fs_free_DFStab_ents() 795 * 796 * Method: fs_get_DFStab_ents 797 * 798 * Description: Retrieves the dfstab entry list. 799 * 800 * Parameters: 801 * int *errp - error pointer - If an error occurs this will be non-zero upon 802 * return from the function 803 * 804 * Return: 805 * Returns the pointer to the dfstab entry list. 806 * If NULL is returned and errp is 0 then dfstab has no entries. If errp is 807 * not 0 there was an error and the value of errp is set to the errno 808 * value for that error. 809 */ 810 fs_dfstab_entry_t fs_get_DFStab_ents(int *err); 811 812 /* 813 * NOTE: the caller of this function is responsible for freeing any 814 * memory allocated by calling fs_free_DFStab_ents() 815 * 816 * Method: fs_get_DFStab_ent_Desc 817 * 818 * Description: Retrieves the description information for the present 819 * dfstab entry. 820 * 821 * Parameters: 822 * fs_dfstab_entry_t entry - the dfstab entry to retrieve the description from. 823 * 824 * Return: 825 * The string containing the description for the dfstab entry. 826 * If the description is not set NULL is returned. 827 * 828 * Note: the description is an optional share option and a return value of 829 * NULL is not an error but indicates that the description was not set. 830 */ 831 char *fs_get_DFStab_ent_Desc(fs_dfstab_entry_t); 832 833 /* 834 * Method: fs_get_DFStab_ent_Fstype 835 * 836 * Description: Retrieves the filesystem type information from the dfstab 837 * entry passed in. 838 * 839 * Parameters: 840 * fs_dfstab_entry_t entry - the dfstab entry to retrieve the fstype from. 841 * 842 * Return: 843 * The string containing the filesystem type. 844 * 845 * Note: if fstype is not set in the dfstab entry the default fstype is 846 * returned. 847 */ 848 char *fs_get_DFStab_ent_Fstype(fs_dfstab_entry_t); 849 850 /* 851 * Method: fs_get_DFStab_ent_Next 852 * 853 * Description: Retrieves the next entry in the dfstab entry list. 854 * 855 * Parameters: 856 * fs_dfstab_entry_t entry - The dfstab entry pointer to get the next 857 * pointer from. 858 * 859 * Return: 860 * Returns the next dfstab entry. 861 * A return value of NULL indicates the end of the dfstab entry list. 862 */ 863 fs_dfstab_entry_t fs_get_DFStab_ent_Next(fs_dfstab_entry_t); 864 865 /* 866 * Method: fs_get_DFStab_ent_Options 867 * 868 * Description: Retrieves the share options from the dfstab 869 * entry passed in. 870 * 871 * Parameters: 872 * fs_dfstab_entry_t entry - The dfstab entry to retrieve the share 873 * options from. 874 * 875 * Return: 876 * Returns the string containing the share options. 877 * A NULL value indicates that no options were specified in the dfstab entry. 878 */ 879 char *fs_get_DFStab_ent_Options(fs_dfstab_entry_t); 880 881 /* 882 * Method: fs_get_DFStab_ent_Path 883 * 884 * Description: Retrieves the path information from the dfstab 885 * entry passed in. 886 * 887 * Parameters: 888 * fs_dfstab_entry_t entry - the dfstab entry to retrieve the path from. 889 * 890 * Return: 891 * Returns the string containing the path. 892 * A NULL value indecates that no path information is available for the 893 * dfstab entry. A NULL value here is an error and indicates an invalid 894 * dfstab entry. 895 */ 896 char *fs_get_DFStab_ent_Path(fs_dfstab_entry_t); 897 898 /* 899 * Method: fs_get_DFStab_ent_Res 900 * 901 * Description: Retrieves the resource information from the dfstab entry 902 * passed in. 903 * 904 * Parameters: 905 * fs_dfstab_entry_t entry - the dfstab entry to retrieve the resource 906 * information from. 907 * 908 * Return: 909 * Returns the string containing the path. 910 * A NULL value indecates that no resource information is available for the 911 * dfstab entry. 912 */ 913 char *fs_get_DFStab_ent_Res(fs_dfstab_entry_t); 914 915 /* 916 * Method: fs_get_Dfstab_share_cmd 917 * 918 * Description: Retrieves the share command that corresponds to the 919 * dfstab entry passed in. 920 * 921 * Parameters: 922 * fs_dfstab_entry_t entry - The dfstab entry that will be used to create 923 * a share command. 924 * int *errp - error pointer - If an error occurs this will be non-zero upon 925 * return from the function 926 * 927 * Return: 928 * Returns the string containing the share command. 929 * A NULL value indicates an error occured and errp will be non zero. 930 */ 931 char *fs_get_Dfstab_share_cmd(fs_dfstab_entry_t, int *); 932 933 /* 934 * NOTE: the caller of this function is responsible for freeing any 935 * memory allocated by calling fs_free_DFStab_ents() 936 * 937 * Method: fs_set_DFStab_ent 938 * 939 * Description: Used to add entries into dfstab 940 * 941 * Parameters: 942 * char *path - The path for the dfstab entry 943 * char *fstype - The filesystem type for the share 944 * char *options - The share options to be used for the dfstab entry 945 * char *description - The description for the share 946 * int *errp - error pointer - If an error occurs this will be non-zero upon 947 * return from the function 948 * 949 * Return: 950 * Returns a pointer to the begining of the dfstab entry list 951 * Failure returns NULL 952 */ 953 fs_dfstab_entry_t fs_set_DFStab_ent(char *, char *, char *, char *, int *); 954 955 /* 956 * NOTE: the caller of this function is responsible for freeing any 957 * memory allocated by calling fs_free_DFStab_ents() 958 * 959 * Method: fs_del_All_DFStab_ents_with_Path 960 * 961 * Description: Removes all dfstab entries with the specified path. 962 * 963 * Parameters: 964 * char *path - The path to checked for removal from dfstab. 965 * int *err - error pointer. 966 * 967 * Return: returns a pointer to the nfs list of dfstab entries. 968 */ 969 fs_dfstab_entry_t fs_del_All_DFStab_ents_with_Path(char *, int *); 970 971 /* 972 * Debuging functions 973 */ 974 void fs_print_dfstab_entries(fs_dfstab_entry_t); 975 976 /* 977 * NFS mount interface method declarations 978 */ 979 /* 980 * Method: nfs_free_mntinfo_list 981 * 982 * Description: Used to free the network id list, which is an array of strings. 983 * 984 * Parameters: 985 * nfs_mntlist_t *mountinfo_list - The list of mounts and associated mount 986 * information 987 * 988 */ 989 void nfs_free_mntinfo_list(nfs_mntlist_t *); 990 991 /* 992 * NOTE: the caller of this function is responsible for freeing any 993 * memory allocated by calling nfs_free_mntinfo_list() 994 * 995 * Method: nfs_get_filtered_mount_list 996 * 997 * Description: Can be used to filter nfs mounts only by the following mount 998 * attributes or a mixture of them: 999 * 1.) resource 1000 * 2.) mount point 1001 * 3.) mount option string 1002 * 4.) time mounted 1003 * 1004 * NULL must be passed into the options that are not being used in the filter. 1005 * 1006 * Parameters: 1007 * char *resource - The name of the resource to be mounted 1008 * char *mountp - The pathname of the directory on which the filesystem 1009 * is mounted 1010 * char *mntopts - The mount options 1011 * char *time - The time at which the filesystem was mounted 1012 * boolean_t find_overlays - Flag used to turn on overlay checking 1013 * int *errp - error pointer - If an error occurs this will be non-zero upon 1014 * return from the function 1015 * 1016 * Return: 1017 * nfs_mntlist_t * - Returns a list of nfs mounts based on the 1018 * parameters passed in. 1019 */ 1020 nfs_mntlist_t *nfs_get_filtered_mount_list(char *resource, char *mountp, 1021 char *mntopts, char *time, boolean_t find_overlays, 1022 int *errp); 1023 1024 /* 1025 * NOTE: the caller of this function is responsible for freeing any 1026 * memory allocated by calling nfs_free_mntinfo_list() 1027 * 1028 * Method: nfs_get_mounts_by_mntopt 1029 * 1030 * Description: Can be used to filter mounts by the mount options attribute. 1031 * 1032 * Parameters: 1033 * char *mntopts - The mount options 1034 * boolean_t find_overlays - Flag used to turn on overlay checking 1035 * int *errp - error pointer - If an error occurs this will be non-zero upon 1036 * return from the function 1037 * 1038 * Return: 1039 * nfs_mntlist_t * - Returns a list of nfs mounts based on the 1040 * parameters passed in. 1041 */ 1042 nfs_mntlist_t *nfs_get_mounts_by_mntopt(char *mntopt, boolean_t find_overlays, 1043 int *errp); 1044 1045 /* 1046 * NOTE: the caller of this function is responsible for freeing any 1047 * memory allocated by calling nfs_free_mntinfo_list() 1048 * 1049 * Method: nfs_get_mount_list 1050 * 1051 * Description: Used to gather all NFS mounts and there associated 1052 * mount information. 1053 * 1054 * Parameters: 1055 * int *errp - error pointer - If an error occurs this will be non-zero upon 1056 * return from the function 1057 * 1058 * Return: 1059 * nfs_mntlist_t * - Returns a list of all nfs mounts. 1060 */ 1061 nfs_mntlist_t *nfs_get_mount_list(int *); 1062 1063 /* 1064 * Netconfig (/etc/netconfig) interface method declarations 1065 */ 1066 /* 1067 * Method: netcfg_free_networkid_list 1068 * 1069 * Description: Used to free the network id list, which is an array of strings. 1070 * 1071 * Parameters: 1072 * char **netlist - The array of strings containing the network id list 1073 * int num_elements - The number of elements in the network id list 1074 * 1075 */ 1076 void netcfg_free_networkid_list(char **netlist, int num_elements); 1077 1078 /* 1079 * NOTE: the caller of this function is responsible for freeing any 1080 * memory allocated by calling netcfg_free_networkid_list() 1081 * 1082 * Method: netcfg_get_networkid_list 1083 * 1084 * Description: Used to create the network id list. 1085 * 1086 * Parameters: 1087 * int *num_elements - The number of elements in the network id list. 1088 * int *errp - error pointer - If an error occurs this will be non-zero upon 1089 * return from the function 1090 * 1091 * Return: 1092 * char ** - Returns the netowk id list. 1093 */ 1094 char **netcfg_get_networkid_list(int *num_elements, int *errp); 1095 1096 /* 1097 * nfssec (/etc/nfssec.conf) interface method declarations 1098 */ 1099 /* 1100 * Method: nfssec_free_secmode_list 1101 * 1102 * Description: Used to free the NFS security mode list. 1103 * 1104 * Parameters: 1105 * char **seclist - The array of strings containing the security mode list 1106 * int num_elements - The number of elements in the list 1107 * 1108 */ 1109 void nfssec_free_secmode_list(char **seclist, int num_elements); 1110 1111 /* 1112 * Method: nfssec_get_default_secmode 1113 * 1114 * Description: Used to retrieve the default security mode 1115 * 1116 * Parameters: 1117 * int *errp - error pointer - If an error occurs this will be non-zero upon 1118 * return from the function 1119 * 1120 * Return: 1121 * char * - Returns the name of the default security mode 1122 */ 1123 char *nfssec_get_default_secmode(int *errp); 1124 1125 /* 1126 * NOTE: the caller of this function is responsible for freeing any 1127 * memory allocated by calling nfssec_free_secmode_list() 1128 * 1129 * Method: nfssec_get_nfs_secmode_list 1130 * 1131 * Description: Used to create the NFS security mode list. 1132 * 1133 * Parameters: 1134 * int *num_elements - The number of elements in the security mode list 1135 * int *errp - error pointer - If an error occurs this will be non-zero upon 1136 * return from the function 1137 * 1138 * Return: 1139 * char ** - Returns the NFS security mode list 1140 * 1141 */ 1142 char **nfssec_get_nfs_secmode_list(int *num_elements, int *errp); 1143 1144 /* 1145 * System information interface method declarations 1146 */ 1147 /* 1148 * Method: sys_get_hostname 1149 * 1150 * Description: Used to retrieve the name of the host 1151 * 1152 * Parameters: 1153 * int *errp - error pointer - If an error occurs this will be non-zero upon 1154 * return from the function 1155 * 1156 * Return: 1157 * char * - Returns the name of the host system 1158 */ 1159 char *sys_get_hostname(int *errp); 1160 1161 1162 #ifdef __cplusplus 1163 } 1164 #endif 1165 1166 #endif /* _LIBFSMGT_H */ 1167