856 }
857
858 void
859 prt_mc4(private_t *pri, int raw, long val) /* print memcntl() (4th) argument */
860 {
861 if (val == 0)
862 prt_dec(pri, 0, val);
863 else if (raw)
864 prt_hhx(pri, 0, val);
865 else {
866 char *s = NULL;
867
868 #define CBSIZE sizeof (pri->code_buf)
869 /* cheating -- look at memcntl func */
870 switch (pri->sys_args[2]) {
871 case MC_ADVISE:
872 prt_mad(pri, 0, val);
873 return;
874
875 case MC_SYNC:
876 if ((val & ~(MS_SYNC|MS_ASYNC|MS_INVALIDATE)) == 0) {
877 *(s = pri->code_buf) = '\0';
878 if (val & MS_SYNC)
879 (void) strlcat(s, "|MS_SYNC", CBSIZE);
880 if (val & MS_ASYNC)
881 (void) strlcat(s, "|MS_ASYNC", CBSIZE);
882 if (val & MS_INVALIDATE)
883 (void) strlcat(s, "|MS_INVALIDATE",
884 CBSIZE);
885 }
886 break;
887
888 case MC_LOCKAS:
889 case MC_UNLOCKAS:
890 if ((val & ~(MCL_CURRENT|MCL_FUTURE)) == 0) {
891 *(s = pri->code_buf) = '\0';
892 if (val & MCL_CURRENT)
893 (void) strlcat(s, "|MCL_CURRENT",
894 CBSIZE);
895 if (val & MCL_FUTURE)
896 (void) strlcat(s, "|MCL_FUTURE",
897 CBSIZE);
898 }
899 break;
900 }
901 #undef CBSIZE
902
903 if (s == NULL || *s == '\0')
904 prt_hhx(pri, 0, val);
1981 case SCTP_ADD_ADDR: return ("SCTP_ADD_ADDR");
1982 case SCTP_REM_ADDR: return ("SCTP_REM_ADDR");
1983
1984 default: (void) snprintf(pri->code_buf,
1985 sizeof (pri->code_buf),
1986 "0x%lx", val);
1987 return (pri->code_buf);
1988 }
1989 }
1990
1991
1992 const char *
1993 udp_optname(private_t *pri, long val)
1994 {
1995 switch (val) {
1996 case UDP_CHECKSUM: return ("UDP_CHECKSUM");
1997 case UDP_ANONPRIVBIND: return ("UDP_ANONPRIVBIND");
1998 case UDP_EXCLBIND: return ("UDP_EXCLBIND");
1999 case UDP_RCVHDR: return ("UDP_RCVHDR");
2000 case UDP_NAT_T_ENDPOINT: return ("UDP_NAT_T_ENDPOINT");
2001
2002 default: (void) snprintf(pri->code_buf,
2003 sizeof (pri->code_buf), "0x%lx",
2004 val);
2005 return (pri->code_buf);
2006 }
2007 }
2008
2009
2010 /*
2011 * Print setsockopt()/getsockopt() 3rd argument.
2012 */
2013 /*ARGSUSED*/
2014 void
2015 prt_son(private_t *pri, int raw, long val)
2016 {
2017 /* cheating -- look at the level */
2018 switch (pri->sys_args[1]) {
2019 case SOL_SOCKET: outstring(pri, sol_optname(pri, val));
2020 break;
2429 */
2430 void
2431 prt_zga(private_t *pri, int raw, long val)
2432 {
2433 const char *s = NULL;
2434
2435 if (!raw) {
2436 switch ((int)val) {
2437 case ZONE_ATTR_NAME: s = "ZONE_ATTR_NAME"; break;
2438 case ZONE_ATTR_ROOT: s = "ZONE_ATTR_ROOT"; break;
2439 case ZONE_ATTR_STATUS: s = "ZONE_ATTR_STATUS"; break;
2440 case ZONE_ATTR_PRIVSET: s = "ZONE_ATTR_PRIVSET"; break;
2441 case ZONE_ATTR_UNIQID: s = "ZONE_ATTR_UNIQID"; break;
2442 case ZONE_ATTR_POOLID: s = "ZONE_ATTR_POOLID"; break;
2443 case ZONE_ATTR_INITPID: s = "ZONE_ATTR_INITPID"; break;
2444 case ZONE_ATTR_SLBL: s = "ZONE_ATTR_SLBL"; break;
2445 case ZONE_ATTR_INITNAME: s = "ZONE_ATTR_INITNAME"; break;
2446 case ZONE_ATTR_BOOTARGS: s = "ZONE_ATTR_BOOTARGS"; break;
2447 case ZONE_ATTR_BRAND: s = "ZONE_ATTR_BRAND"; break;
2448 case ZONE_ATTR_FLAGS: s = "ZONE_ATTR_FLAGS"; break;
2449 case ZONE_ATTR_PHYS_MCAP: s = "ZONE_ATTR_PHYS_MCAP"; break;
2450 }
2451 }
2452
2453 if (s == NULL)
2454 prt_dec(pri, 0, val);
2455 else
2456 outstring(pri, s);
2457 }
2458
2459 /*
2460 * Print a file descriptor as AT_FDCWD if necessary
2461 */
2462 void
2463 prt_atc(private_t *pri, int raw, long val)
2464 {
2465 if ((int)val == AT_FDCWD) {
2466 if (raw)
2467 prt_hex(pri, 0, (uint_t)AT_FDCWD);
2468 else
2469 outstring(pri, "AT_FDCWD");
|
856 }
857
858 void
859 prt_mc4(private_t *pri, int raw, long val) /* print memcntl() (4th) argument */
860 {
861 if (val == 0)
862 prt_dec(pri, 0, val);
863 else if (raw)
864 prt_hhx(pri, 0, val);
865 else {
866 char *s = NULL;
867
868 #define CBSIZE sizeof (pri->code_buf)
869 /* cheating -- look at memcntl func */
870 switch (pri->sys_args[2]) {
871 case MC_ADVISE:
872 prt_mad(pri, 0, val);
873 return;
874
875 case MC_SYNC:
876 if ((val &
877 ~(MS_SYNC|MS_ASYNC|MS_INVALIDATE|MS_INVALCURPROC))
878 == 0) {
879 *(s = pri->code_buf) = '\0';
880 if (val & MS_SYNC)
881 (void) strlcat(s, "|MS_SYNC", CBSIZE);
882 if (val & MS_ASYNC)
883 (void) strlcat(s, "|MS_ASYNC", CBSIZE);
884 if (val & MS_INVALIDATE)
885 (void) strlcat(s, "|MS_INVALIDATE",
886 CBSIZE);
887 if (val & MS_INVALCURPROC)
888 (void) strlcat(s, "|MS_INVALCURPROC",
889 CBSIZE);
890 }
891 break;
892
893 case MC_LOCKAS:
894 case MC_UNLOCKAS:
895 if ((val & ~(MCL_CURRENT|MCL_FUTURE)) == 0) {
896 *(s = pri->code_buf) = '\0';
897 if (val & MCL_CURRENT)
898 (void) strlcat(s, "|MCL_CURRENT",
899 CBSIZE);
900 if (val & MCL_FUTURE)
901 (void) strlcat(s, "|MCL_FUTURE",
902 CBSIZE);
903 }
904 break;
905 }
906 #undef CBSIZE
907
908 if (s == NULL || *s == '\0')
909 prt_hhx(pri, 0, val);
1986 case SCTP_ADD_ADDR: return ("SCTP_ADD_ADDR");
1987 case SCTP_REM_ADDR: return ("SCTP_REM_ADDR");
1988
1989 default: (void) snprintf(pri->code_buf,
1990 sizeof (pri->code_buf),
1991 "0x%lx", val);
1992 return (pri->code_buf);
1993 }
1994 }
1995
1996
1997 const char *
1998 udp_optname(private_t *pri, long val)
1999 {
2000 switch (val) {
2001 case UDP_CHECKSUM: return ("UDP_CHECKSUM");
2002 case UDP_ANONPRIVBIND: return ("UDP_ANONPRIVBIND");
2003 case UDP_EXCLBIND: return ("UDP_EXCLBIND");
2004 case UDP_RCVHDR: return ("UDP_RCVHDR");
2005 case UDP_NAT_T_ENDPOINT: return ("UDP_NAT_T_ENDPOINT");
2006 case UDP_SND_TO_CONNECTED: return ("UDP_SND_TO_CONNECTED");
2007
2008 default: (void) snprintf(pri->code_buf,
2009 sizeof (pri->code_buf), "0x%lx",
2010 val);
2011 return (pri->code_buf);
2012 }
2013 }
2014
2015
2016 /*
2017 * Print setsockopt()/getsockopt() 3rd argument.
2018 */
2019 /*ARGSUSED*/
2020 void
2021 prt_son(private_t *pri, int raw, long val)
2022 {
2023 /* cheating -- look at the level */
2024 switch (pri->sys_args[1]) {
2025 case SOL_SOCKET: outstring(pri, sol_optname(pri, val));
2026 break;
2435 */
2436 void
2437 prt_zga(private_t *pri, int raw, long val)
2438 {
2439 const char *s = NULL;
2440
2441 if (!raw) {
2442 switch ((int)val) {
2443 case ZONE_ATTR_NAME: s = "ZONE_ATTR_NAME"; break;
2444 case ZONE_ATTR_ROOT: s = "ZONE_ATTR_ROOT"; break;
2445 case ZONE_ATTR_STATUS: s = "ZONE_ATTR_STATUS"; break;
2446 case ZONE_ATTR_PRIVSET: s = "ZONE_ATTR_PRIVSET"; break;
2447 case ZONE_ATTR_UNIQID: s = "ZONE_ATTR_UNIQID"; break;
2448 case ZONE_ATTR_POOLID: s = "ZONE_ATTR_POOLID"; break;
2449 case ZONE_ATTR_INITPID: s = "ZONE_ATTR_INITPID"; break;
2450 case ZONE_ATTR_SLBL: s = "ZONE_ATTR_SLBL"; break;
2451 case ZONE_ATTR_INITNAME: s = "ZONE_ATTR_INITNAME"; break;
2452 case ZONE_ATTR_BOOTARGS: s = "ZONE_ATTR_BOOTARGS"; break;
2453 case ZONE_ATTR_BRAND: s = "ZONE_ATTR_BRAND"; break;
2454 case ZONE_ATTR_FLAGS: s = "ZONE_ATTR_FLAGS"; break;
2455 case ZONE_ATTR_DID: s = "ZONE_ATTR_DID"; break;
2456 case ZONE_ATTR_PMCAP_NOVER: s = "ZONE_ATTR_PMCAP_NOVER"; break;
2457 case ZONE_ATTR_PMCAP_PAGEOUT: s = "ZONE_ATTR_PMCAP_PAGEOUT";
2458 break;
2459 }
2460 }
2461
2462 if (s == NULL)
2463 prt_dec(pri, 0, val);
2464 else
2465 outstring(pri, s);
2466 }
2467
2468 /*
2469 * Print a file descriptor as AT_FDCWD if necessary
2470 */
2471 void
2472 prt_atc(private_t *pri, int raw, long val)
2473 {
2474 if ((int)val == AT_FDCWD) {
2475 if (raw)
2476 prt_hex(pri, 0, (uint_t)AT_FDCWD);
2477 else
2478 outstring(pri, "AT_FDCWD");
|