Feature #5822 » bsnmpd-descr-ifAlias.diff
| contrib/bsnmp/lib/asn1.c | ||
|---|---|---|
| 652 | 652 |
err = ASN_ERR_RANGE; |
| 653 | 653 |
} |
| 654 | 654 |
if (oid->subs[0] > 2 || |
| 655 |
(oid->subs[0] < 2 && oid->subs[1] >= 40)) {
|
|
| 655 |
(oid->subs[0] < 2 && oid->subs[0] >= 40)) {
|
|
| 656 | 656 |
asn_error(NULL, "oid out of range (%u,%u)", |
| 657 | 657 |
oid->subs[0], oid->subs[1]); |
| 658 | 658 |
err = ASN_ERR_RANGE; |
| contrib/bsnmp/lib/snmp.c | ||
|---|---|---|
| 288 | 288 |
memset(buf, 0, 256); |
| 289 | 289 |
tb.asn_ptr = buf; |
| 290 | 290 |
tb.asn_len = 256; |
| 291 |
u_int len; |
|
| 292 | 291 | |
| 293 |
if (asn_get_octetstring(b, buf, &len) != ASN_ERR_OK) {
|
|
| 292 |
if (asn_get_octetstring(b, buf, &tb.asn_len) != ASN_ERR_OK) {
|
|
| 294 | 293 |
snmp_error("cannot parse usm header");
|
| 295 | 294 |
return (ASN_ERR_FAILED); |
| 296 | 295 |
} |
| 297 |
tb.asn_len = len; |
|
| 298 | 296 | |
| 299 | 297 |
if (asn_get_sequence(&tb, &octs_len) != ASN_ERR_OK) {
|
| 300 | 298 |
snmp_error("cannot decode usm header");
|
| ... | ... | |
| 866 | 864 |
return (SNMP_CODE_FAILED); |
| 867 | 865 | |
| 868 | 866 |
pdu->scoped_len = b->asn_ptr - pdu->scoped_ptr; |
| 869 |
if (snmp_pdu_fix_padd(b, pdu) != ASN_ERR_OK)
|
|
| 867 |
if ((code = snmp_pdu_fix_padd(b, pdu))!= ASN_ERR_OK)
|
|
| 870 | 868 |
return (SNMP_CODE_FAILED); |
| 871 | 869 | |
| 872 | 870 |
if (pdu->security_model != SNMP_SECMODEL_USM) |
| ... | ... | |
| 999 | 997 |
if ((err = snmp_pdu_encode_header(resp_b, pdu)) != SNMP_CODE_OK) |
| 1000 | 998 |
return (err); |
| 1001 | 999 |
for (idx = 0; idx < pdu->nbindings; idx++) |
| 1002 |
if (snmp_binding_encode(resp_b, &pdu->bindings[idx])
|
|
| 1000 |
if ((err = snmp_binding_encode(resp_b, &pdu->bindings[idx]))
|
|
| 1003 | 1001 |
!= ASN_ERR_OK) |
| 1004 | 1002 |
return (SNMP_CODE_FAILED); |
| 1005 | 1003 | |
| contrib/bsnmp/lib/snmp.h | ||
|---|---|---|
| 182 | 182 | |
| 183 | 183 |
/* fixes for encoding */ |
| 184 | 184 |
size_t outer_len; |
| 185 |
asn_len_t scoped_len;
|
|
| 185 |
size_t scoped_len;
|
|
| 186 | 186 |
u_char *outer_ptr; |
| 187 | 187 |
u_char *digest_ptr; |
| 188 | 188 |
u_char *encrypted_ptr; |
| contrib/bsnmp/lib/snmpagent.c | ||
|---|---|---|
| 166 | 166 |
} |
| 167 | 167 | |
| 168 | 168 |
static void |
| 169 |
snmp_pdu_create_response(const struct snmp_pdu *pdu, struct snmp_pdu *resp)
|
|
| 169 |
snmp_pdu_create_response(struct snmp_pdu *pdu, struct snmp_pdu *resp) |
|
| 170 | 170 |
{
|
| 171 | 171 |
memset(resp, 0, sizeof(*resp)); |
| 172 | 172 |
strcpy(resp->community, pdu->community); |
| ... | ... | |
| 276 | 276 |
} |
| 277 | 277 |
} |
| 278 | 278 | |
| 279 |
if (snmp_fix_encoding(resp_b, resp) != SNMP_CODE_OK) {
|
|
| 280 |
snmp_debug("get: failed to encode PDU");
|
|
| 281 |
return (SNMP_RET_ERR); |
|
| 282 |
} |
|
| 283 | ||
| 284 |
return (SNMP_RET_OK); |
|
| 279 |
return (snmp_fix_encoding(resp_b, resp)); |
|
| 285 | 280 |
} |
| 286 | 281 | |
| 287 | 282 |
static struct snmp_node * |
| ... | ... | |
| 443 | 438 |
return (SNMP_RET_ERR); |
| 444 | 439 |
} |
| 445 | 440 |
} |
| 446 | ||
| 447 |
if (snmp_fix_encoding(resp_b, resp) != SNMP_CODE_OK) {
|
|
| 448 |
snmp_debug("getnext: failed to encode PDU");
|
|
| 449 |
return (SNMP_RET_ERR); |
|
| 450 |
} |
|
| 451 | ||
| 452 |
return (SNMP_RET_OK); |
|
| 441 |
return (snmp_fix_encoding(resp_b, resp)); |
|
| 453 | 442 |
} |
| 454 | 443 | |
| 455 | 444 |
enum snmp_ret |
| ... | ... | |
| 553 | 542 |
} |
| 554 | 543 | |
| 555 | 544 |
done: |
| 556 |
if (snmp_fix_encoding(resp_b, resp) != SNMP_CODE_OK) {
|
|
| 557 |
snmp_debug("getnext: failed to encode PDU");
|
|
| 558 |
return (SNMP_RET_ERR); |
|
| 559 |
} |
|
| 560 | ||
| 561 |
return (SNMP_RET_OK); |
|
| 545 |
return (snmp_fix_encoding(resp_b, resp)); |
|
| 562 | 546 |
} |
| 563 | 547 | |
| 564 | 548 |
/* |
| ... | ... | |
| 973 | 957 |
snmp_make_errresp(const struct snmp_pdu *pdu, struct asn_buf *pdu_b, |
| 974 | 958 |
struct asn_buf *resp_b) |
| 975 | 959 |
{
|
| 976 |
u_char type; |
|
| 977 | 960 |
asn_len_t len; |
| 978 | 961 |
struct snmp_pdu resp; |
| 979 | 962 |
enum asn_err err; |
| 980 | 963 |
enum snmp_code code; |
| 981 | 964 | |
| 982 |
snmp_pdu_create_response(pdu, &resp); |
|
| 983 | ||
| 965 |
memset(&resp, 0, sizeof(resp)); |
|
| 984 | 966 |
if ((code = snmp_pdu_decode_header(pdu_b, &resp)) != SNMP_CODE_OK) |
| 985 | 967 |
return (SNMP_RET_IGN); |
| 986 | 968 | |
| 987 |
if (pdu->version == SNMP_V3) {
|
|
| 988 |
if (resp.user.priv_proto != SNMP_PRIV_NOPRIV && |
|
| 989 |
(asn_get_header(pdu_b, &type, &resp.scoped_len) != ASN_ERR_OK |
|
| 990 |
|| type != ASN_TYPE_OCTETSTRING)) {
|
|
| 991 |
snmp_error("cannot decode encrypted pdu");
|
|
| 992 |
return (SNMP_RET_IGN); |
|
| 993 |
} |
|
| 994 | ||
| 995 |
if (asn_get_sequence(pdu_b, &len) != ASN_ERR_OK) {
|
|
| 996 |
snmp_error("cannot decode scoped pdu header");
|
|
| 997 |
return (SNMP_RET_IGN); |
|
| 998 |
} |
|
| 999 | ||
| 1000 |
len = SNMP_ENGINE_ID_SIZ; |
|
| 1001 |
if (asn_get_octetstring(pdu_b, (u_char *)resp.context_engine, |
|
| 1002 |
&len) != ASN_ERR_OK) {
|
|
| 1003 |
snmp_error("cannot decode msg context engine");
|
|
| 1004 |
return (SNMP_RET_IGN); |
|
| 1005 |
} |
|
| 1006 |
resp.context_engine_len = len; |
|
| 1007 |
len = SNMP_CONTEXT_NAME_SIZ; |
|
| 1008 |
if (asn_get_octetstring(pdu_b, (u_char *)resp.context_name, |
|
| 1009 |
&len) != ASN_ERR_OK) {
|
|
| 1010 |
snmp_error("cannot decode msg context name");
|
|
| 1011 |
return (SNMP_RET_IGN); |
|
| 1012 |
} |
|
| 1013 |
resp.context_name[len] = '\0'; |
|
| 1014 |
} |
|
| 1015 | ||
| 1016 | ||
| 1017 |
if (asn_get_header(pdu_b, &type, &len) != ASN_ERR_OK) {
|
|
| 1018 |
snmp_error("cannot get pdu header");
|
|
| 1019 |
return (SNMP_RET_IGN); |
|
| 1020 |
} |
|
| 1021 | ||
| 1022 |
if ((type & ~ASN_TYPE_MASK) != |
|
| 1023 |
(ASN_TYPE_CONSTRUCTED | ASN_CLASS_CONTEXT)) {
|
|
| 1024 |
snmp_error("bad pdu header tag");
|
|
| 969 |
if (pdu_b->asn_len < len) |
|
| 1025 | 970 |
return (SNMP_RET_IGN); |
| 1026 |
}
|
|
| 971 |
pdu_b->asn_len = len;
|
|
| 1027 | 972 | |
| 1028 | 973 |
err = snmp_parse_pdus_hdr(pdu_b, &resp, &len); |
| 1029 | 974 |
if (ASN_ERR_STOPPED(err)) |
| contrib/bsnmp/snmp_mibII/mibII.c | ||
|---|---|---|
| 443 | 443 |
size_t len; |
| 444 | 444 |
void *newmib; |
| 445 | 445 |
struct ifmibdata oldmib = ifp->mib; |
| 446 |
struct ifreq irr; |
|
| 447 | 446 | |
| 448 | 447 |
if (fetch_generic_mib(ifp, &oldmib) == -1) |
| 449 | 448 |
return (-1); |
| ... | ... | |
| 515 | 514 |
} |
| 516 | 515 | |
| 517 | 516 |
out: |
| 518 |
strncpy(irr.ifr_name, ifp->name, sizeof(irr.ifr_name)); |
|
| 519 |
irr.ifr_buffer.buffer = MIBIF_PRIV(ifp)->alias; |
|
| 520 |
irr.ifr_buffer.length = sizeof(MIBIF_PRIV(ifp)->alias); |
|
| 521 |
if (ioctl(mib_netsock, SIOCGIFDESCR, &irr) == -1) {
|
|
| 522 |
MIBIF_PRIV(ifp)->alias[0] = 0; |
|
| 523 |
if (errno != ENOMSG) |
|
| 524 |
syslog(LOG_WARNING, "SIOCGIFDESCR (%s): %m", ifp->name); |
|
| 525 |
} else if (irr.ifr_buffer.buffer == NULL) {
|
|
| 526 |
MIBIF_PRIV(ifp)->alias[0] = 0; |
|
| 527 |
syslog(LOG_WARNING, "SIOCGIFDESCR (%s): too long (%zu)", |
|
| 528 |
ifp->name, irr.ifr_buffer.length); |
|
| 529 |
} |
|
| 530 | 517 |
ifp->mibtick = get_ticks(); |
| 531 | 518 |
return (0); |
| 532 | 519 |
} |
| contrib/bsnmp/snmp_mibII/mibII.h | ||
|---|---|---|
| 57 | 57 |
#include "snmp_mibII.h" |
| 58 | 58 |
#include "mibII_tree.h" |
| 59 | 59 | |
| 60 |
/* maximum size of the interface alias */ |
|
| 61 |
#define MIBIF_ALIAS_SIZE (64 + 1) |
|
| 62 | ||
| 63 | 60 |
/* |
| 64 | 61 |
* Interface list and flags. |
| 65 | 62 |
*/ |
| ... | ... | |
| 80 | 77 |
uint64_t hc_opackets; |
| 81 | 78 |
uint64_t hc_imcasts; |
| 82 | 79 |
uint64_t hc_ipackets; |
| 83 | ||
| 84 |
/* this should be made public */ |
|
| 85 |
char alias[MIBIF_ALIAS_SIZE]; |
|
| 86 | 80 |
}; |
| 87 | 81 |
#define MIBIF_PRIV(IFP) ((struct mibif_private *)((IFP)->private)) |
| 88 | 82 | |
| contrib/bsnmp/snmp_mibII/mibII_interfaces.c | ||
|---|---|---|
| 528 | 528 |
break; |
| 529 | 529 | |
| 530 | 530 |
case LEAF_ifAlias: |
| 531 |
ret = string_get(value, MIBIF_PRIV(ifp)->alias, -1);
|
|
| 531 |
ret = string_get(value, "", -1);
|
|
| 532 | 532 |
break; |
| 533 | 533 | |
| 534 | 534 |
case LEAF_ifCounterDiscontinuityTime: |
| contrib/bsnmp/snmp_mibII/mibII_ip.c | ||
|---|---|---|
| 151 | 151 |
op_ip(struct snmp_context *ctx, struct snmp_value *value, |
| 152 | 152 |
u_int sub, u_int idx __unused, enum snmp_op op) |
| 153 | 153 |
{
|
| 154 |
int old = 0;
|
|
| 154 |
int old; |
|
| 155 | 155 | |
| 156 | 156 |
switch (op) {
|
| 157 | 157 | |
| contrib/bsnmp/snmp_mibII/mibII_tcp.c | ||
|---|---|---|
| 45 | 45 |
}; |
| 46 | 46 | |
| 47 | 47 |
static uint64_t tcp_tick; |
| 48 |
static uint64_t tcp_stats_tick; |
|
| 49 | 48 |
static struct tcpstat tcpstat; |
| 50 | 49 |
static struct xinpgen *xinpgen; |
| 51 | 50 |
static size_t xinpgen_len; |
| 51 |
static u_int tcp_count; |
|
| 52 | 52 |
static u_int tcp_total; |
| 53 | 53 | |
| 54 | 54 |
static u_int oidnum; |
| ... | ... | |
| 64 | 64 |
} |
| 65 | 65 | |
| 66 | 66 |
static int |
| 67 |
fetch_tcp_stats(void)
|
|
| 67 |
fetch_tcp(void) |
|
| 68 | 68 |
{
|
| 69 | 69 |
size_t len; |
| 70 |
struct xinpgen *ptr; |
|
| 71 |
struct xtcpcb *tp; |
|
| 72 |
struct tcp_index *oid; |
|
| 73 |
in_addr_t inaddr; |
|
| 70 | 74 | |
| 71 | 75 |
len = sizeof(tcpstat); |
| 72 | 76 |
if (sysctlbyname("net.inet.tcp.stats", &tcpstat, &len, NULL, 0) == -1) {
|
| ... | ... | |
| 78 | 82 |
return (-1); |
| 79 | 83 |
} |
| 80 | 84 | |
| 81 |
tcp_stats_tick = get_ticks(); |
|
| 82 | ||
| 83 |
return (0); |
|
| 84 |
} |
|
| 85 | ||
| 86 |
static int |
|
| 87 |
fetch_tcp(void) |
|
| 88 |
{
|
|
| 89 |
size_t len; |
|
| 90 |
struct xinpgen *ptr; |
|
| 91 |
struct xtcpcb *tp; |
|
| 92 |
struct tcp_index *oid; |
|
| 93 |
in_addr_t inaddr; |
|
| 94 | ||
| 95 | 85 |
len = 0; |
| 96 | 86 |
if (sysctlbyname("net.inet.tcp.pcblist", NULL, &len, NULL, 0) == -1) {
|
| 97 | 87 |
syslog(LOG_ERR, "net.inet.tcp.pcblist: %m"); |
| ... | ... | |
| 112 | 102 | |
| 113 | 103 |
tcp_tick = get_ticks(); |
| 114 | 104 | |
| 105 |
tcp_count = 0; |
|
| 115 | 106 |
tcp_total = 0; |
| 116 | 107 |
for (ptr = (struct xinpgen *)(void *)((char *)xinpgen + xinpgen->xig_len); |
| 117 | 108 |
ptr->xig_len > sizeof(struct xinpgen); |
| ... | ... | |
| 123 | 114 | |
| 124 | 115 |
if (tp->xt_inp.inp_vflag & INP_IPV4) |
| 125 | 116 |
tcp_total++; |
| 117 | ||
| 118 |
if (tp->xt_tp.t_state == TCPS_ESTABLISHED || |
|
| 119 |
tp->xt_tp.t_state == TCPS_CLOSE_WAIT) |
|
| 120 |
tcp_count++; |
|
| 126 | 121 |
} |
| 127 | 122 | |
| 128 | 123 |
if (oidnum < tcp_total) {
|
| ... | ... | |
| 189 | 184 |
abort(); |
| 190 | 185 |
} |
| 191 | 186 | |
| 192 |
if (tcp_stats_tick < this_tick)
|
|
| 193 |
if (fetch_tcp_stats() == -1)
|
|
| 187 |
if (tcp_tick < this_tick) |
|
| 188 |
if (fetch_tcp() == -1) |
|
| 194 | 189 |
return (SNMP_ERR_GENERR); |
| 195 | 190 | |
| 196 | 191 |
switch (value->var.subs[sub - 1]) {
|
| ... | ... | |
| 231 | 226 |
break; |
| 232 | 227 | |
| 233 | 228 |
case LEAF_tcpCurrEstab: |
| 234 |
#if __FreeBSD_version > 1003000 |
|
| 235 |
value->v.uint32 = tcpstat.tcps_states[TCPS_ESTABLISHED] + |
|
| 236 |
tcpstat.tcps_states[TCPS_CLOSE_WAIT]; |
|
| 237 |
#else |
|
| 238 |
value->v.uint32 = (uint32_t) -1; |
|
| 239 |
#endif |
|
| 229 |
value->v.uint32 = tcp_count; |
|
| 240 | 230 |
break; |
| 241 | 231 | |
| 242 | 232 |
case LEAF_tcpInSegs: |
| contrib/bsnmp/snmp_target/target_snmp.c | ||
|---|---|---|
| 301 | 301 |
default: |
| 302 | 302 |
break; |
| 303 | 303 |
} |
| 304 |
return (SNMP_ERR_NOERROR); |
|
| 305 | 304 | |
| 306 | 305 |
default: |
| 307 | 306 |
abort(); |
| ... | ... | |
| 626 | 625 |
default: |
| 627 | 626 |
break; |
| 628 | 627 |
} |
| 629 |
return (SNMP_ERR_NOERROR); |
|
| 630 | 628 | |
| 631 | 629 |
default: |
| 632 | 630 |
abort(); |
| ... | ... | |
| 665 | 663 |
static int |
| 666 | 664 |
target_decode_index(const struct asn_oid *oid, uint sub, char *name) |
| 667 | 665 |
{
|
| 668 |
uint32_t i; |
|
| 666 |
uint32_t i, len;
|
|
| 669 | 667 | |
| 670 |
if (oid->len - sub != oid->subs[sub] + 1 || oid->subs[sub] >= |
|
| 671 |
SNMP_ADM_STR32_SIZ) |
|
| 668 |
if ((len = oid->len - sub) >= SNMP_ADM_STR32_SIZ) |
|
| 672 | 669 |
return (-1); |
| 673 | 670 | |
| 674 |
for (i = 0; i < oid->subs[sub]; i++)
|
|
| 675 |
name[i] = oid->subs[sub + i + 1];
|
|
| 671 |
for (i = 0; i < len; i++)
|
|
| 672 |
name[i] = oid->subs[sub + i]; |
|
| 676 | 673 |
name[i] = '\0'; |
| 677 | 674 | |
| 678 | 675 |
return (0); |
| etc/netstart | ||
|---|---|---|
| 34 | 34 |
# the network by hand, this script will do it for you). |
| 35 | 35 |
# |
| 36 | 36 | |
| 37 |
. /etc/rc.subr |
|
| 38 | ||
| 39 |
load_rc_config 'XXX' |
|
| 40 | 37 |
_start=quietstart |
| 41 | 38 | |
| 42 | 39 |
/etc/rc.d/devd ${_start}
|
| etc/periodic/daily/400.status-disks | ||
|---|---|---|
| 16 | 16 |
echo "" |
| 17 | 17 |
echo "Disk status:" |
| 18 | 18 | |
| 19 |
df $daily_status_disks_df_flags && rc=1 || rc=3 |
|
| 19 |
if [ -n "${daily_status_disks_ignore}" ] ; then
|
|
| 20 |
ignore="egrep -v ${daily_status_disks_ignore}"
|
|
| 21 |
else |
|
| 22 |
ignore="cat" |
|
| 23 |
fi |
|
| 24 |
(df $daily_status_disks_df_flags | ${ignore}) && rc=1 || rc=3
|
|
| 20 | 25 | |
| 21 | 26 |
# display which filesystems need backing up |
| 22 | 27 |
if [ -s /etc/dumpdates ]; then |
| etc/rc.d/local_unbound | ||
|---|---|---|
| 30 | 30 |
: ${local_unbound_config:=${local_unbound_workdir}/unbound.conf}
|
| 31 | 31 |
: ${local_unbound_flags:="-c ${local_unbound_config}"}
|
| 32 | 32 |
: ${local_unbound_forwardconf:=${local_unbound_workdir}/forward.conf}
|
| 33 |
: ${local_unbound_controlconf:=${local_unbound_workdir}/control.conf}
|
|
| 33 | 34 |
: ${local_unbound_anchor:=${local_unbound_workdir}/root.key}
|
| 34 | 35 |
: ${local_unbound_forwarders:=}
|
| 35 | 36 | |
| ... | ... | |
| 68 | 69 |
-w ${local_unbound_workdir} \
|
| 69 | 70 |
-c ${local_unbound_config} \
|
| 70 | 71 |
-f ${local_unbound_forwardconf} \
|
| 72 |
-o ${local_unbound_controlconf} \
|
|
| 71 | 73 |
-a ${local_unbound_anchor} \
|
| 72 | 74 |
${local_unbound_forwarders}
|
| 73 | 75 |
} |
| etc/rc.d/othermta | ||
|---|---|---|
| 10 | 10 |
# |
| 11 | 11 |
. /etc/rc.subr |
| 12 | 12 | |
| 13 |
load_rc_config 'XXX'
|
|
| 13 |
load_rc_config |
|
| 14 | 14 | |
| 15 | 15 |
if [ -n "${mta_start_script}" ]; then
|
| 16 | 16 |
[ "${mta_start_script}" != "/etc/rc.sendmail" ] && \
|
| etc/rc.shutdown | ||
|---|---|---|
| 45 | 45 | |
| 46 | 46 |
. /etc/rc.subr |
| 47 | 47 | |
| 48 |
load_rc_config 'XXX'
|
|
| 48 |
load_rc_config |
|
| 49 | 49 | |
| 50 | 50 |
# reverse_list list |
| 51 | 51 |
# print the list in reverse order |
| lib/libc/net/sctp_sys_calls.c | ||
|---|---|---|
| 700 | 700 |
#ifdef SYS_sctp_generic_sendmsg |
| 701 | 701 |
if (addrcnt == 1) {
|
| 702 | 702 |
socklen_t l; |
| 703 |
ssize_t ret; |
|
| 703 | 704 | |
| 704 | 705 |
/* |
| 705 | 706 |
* Quick way, we don't need to do a connectx so lets use the |
| 706 | 707 |
* syscall directly. |
| 707 | 708 |
*/ |
| 708 | 709 |
l = addrs->sa_len; |
| 709 |
return (syscall(SYS_sctp_generic_sendmsg, sd, |
|
| 710 |
msg, msg_len, addrs, l, sinfo, flags)); |
|
| 710 |
ret = syscall(SYS_sctp_generic_sendmsg, sd, |
|
| 711 |
msg, msg_len, addrs, l, sinfo, flags); |
|
| 712 |
if ((ret >= 0) && (sinfo != NULL)) {
|
|
| 713 |
sinfo->sinfo_assoc_id = sctp_getassocid(sd, addrs); |
|
| 714 |
} |
|
| 715 |
return (ret); |
|
| 711 | 716 |
} |
| 712 | 717 |
#endif |
| 713 | 718 | |
| ... | ... | |
| 984 | 989 |
struct sockaddr *addr; |
| 985 | 990 |
struct sockaddr_in *addr_in; |
| 986 | 991 |
struct sockaddr_in6 *addr_in6; |
| 992 |
sctp_assoc_t *assoc_id; |
|
| 987 | 993 | |
| 988 | 994 |
if ((addrcnt < 0) || |
| 989 | 995 |
(iovcnt < 0) || |
| ... | ... | |
| 1002 | 1008 |
errno = ENOMEM; |
| 1003 | 1009 |
return (-1); |
| 1004 | 1010 |
} |
| 1011 |
assoc_id = NULL; |
|
| 1005 | 1012 |
msg.msg_control = cmsgbuf; |
| 1006 | 1013 |
msg.msg_controllen = 0; |
| 1007 | 1014 |
cmsg = (struct cmsghdr *)cmsgbuf; |
| ... | ... | |
| 1025 | 1032 |
memcpy(CMSG_DATA(cmsg), info, sizeof(struct sctp_sndinfo)); |
| 1026 | 1033 |
msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); |
| 1027 | 1034 |
cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); |
| 1035 |
assoc_id = &(((struct sctp_sndinfo *)info)->snd_assoc_id); |
|
| 1028 | 1036 |
break; |
| 1029 | 1037 |
case SCTP_SENDV_PRINFO: |
| 1030 | 1038 |
if ((info == NULL) || (infolen < sizeof(struct sctp_prinfo))) {
|
| ... | ... | |
| 1066 | 1074 |
memcpy(CMSG_DATA(cmsg), &spa_info->sendv_sndinfo, sizeof(struct sctp_sndinfo)); |
| 1067 | 1075 |
msg.msg_controllen += CMSG_SPACE(sizeof(struct sctp_sndinfo)); |
| 1068 | 1076 |
cmsg = (struct cmsghdr *)((caddr_t)cmsg + CMSG_SPACE(sizeof(struct sctp_sndinfo))); |
| 1077 |
assoc_id = &(spa_info->sendv_sndinfo.snd_assoc_id); |
|
| 1069 | 1078 |
} |
| 1070 | 1079 |
if (spa_info->sendv_flags & SCTP_SEND_PRINFO_VALID) {
|
| 1071 | 1080 |
cmsg->cmsg_level = IPPROTO_SCTP; |
| ... | ... | |
| 1164 | 1173 |
msg.msg_flags = 0; |
| 1165 | 1174 |
ret = sendmsg(sd, &msg, flags); |
| 1166 | 1175 |
free(cmsgbuf); |
| 1176 |
if ((ret >= 0) && (addrs != NULL) && (assoc_id != NULL)) {
|
|
| 1177 |
*assoc_id = sctp_getassocid(sd, addrs); |
|
| 1178 |
} |
|
| 1167 | 1179 |
return (ret); |
| 1168 | 1180 |
} |
| 1169 | 1181 | |
| lib/libc/stdio/fopen.3 | ||
|---|---|---|
| 120 | 120 |
.St -isoC |
| 121 | 121 |
and has effect only for |
| 122 | 122 |
.Fn fmemopen |
| 123 |
; otherwise the ``b'' is ignored. |
|
| 123 |
; otherwise |
|
| 124 |
.Dq Li b |
|
| 125 |
is ignored. |
|
| 124 | 126 |
.Pp |
| 125 | 127 |
Any created files will have mode |
| 126 | 128 |
.Do Dv S_IRUSR |
| ... | ... | |
| 230 | 232 |
.Fa size |
| 231 | 233 |
bytes of memory. This buffer is automatically freed when the |
| 232 | 234 |
stream is closed. Buffers can be opened in text-mode (default) or binary-mode |
| 233 |
(if ``b'' is present in the second or third position of the |
|
| 235 |
(if |
|
| 236 |
.Dq Li b |
|
| 237 |
is present in the second or third position of the |
|
| 234 | 238 |
.Fa mode |
| 235 | 239 |
argument). Buffers opened in text-mode make sure that writes are terminated with |
| 236 | 240 |
a NULL byte, if the last write hasn't filled up the whole buffer. Buffers |
| ... | ... | |
| 343 | 347 |
function |
| 344 | 348 |
conforms to |
| 345 | 349 |
.St -p1003.1-2008 . |
| 346 |
The ``b'' mode does not conform to any standard |
|
| 350 |
The |
|
| 351 |
.Dq Li b |
|
| 352 |
mode does not conform to any standard |
|
| 347 | 353 |
but is also supported by glibc. |
| lib/libc/stdlib/tdelete.c | ||
|---|---|---|
| 1 |
/* $NetBSD: tdelete.c,v 1.2 1999/09/16 11:45:37 lukem Exp $ */
|
|
| 1 |
/* $NetBSD: tdelete.c,v 1.8 2016/01/20 20:47:41 christos Exp $ */
|
|
| 2 | 2 | |
| 3 | 3 |
/* |
| 4 | 4 |
* Tree search generalized from Knuth (6.2.2) Algorithm T just like |
| ... | ... | |
| 14 | 14 |
#include <sys/cdefs.h> |
| 15 | 15 |
#if 0 |
| 16 | 16 |
#if defined(LIBC_SCCS) && !defined(lint) |
| 17 |
__RCSID("$NetBSD: tdelete.c,v 1.6 2012/06/25 22:32:45 abs Exp $");
|
|
| 17 |
__RCSID("$NetBSD: tdelete.c,v 1.8 2016/01/20 20:47:41 christos Exp $");
|
|
| 18 | 18 |
#endif /* LIBC_SCCS and not lint */ |
| 19 | 19 |
#endif |
| 20 | 20 |
__FBSDID("$FreeBSD$");
|
| ... | ... | |
| 25 | 25 | |
| 26 | 26 | |
| 27 | 27 |
/* |
| 28 |
* find a node with given key
|
|
| 28 |
* delete node with given key
|
|
| 29 | 29 |
* |
| 30 |
* vkey: key to be found
|
|
| 30 |
* vkey: key to be deleted
|
|
| 31 | 31 |
* vrootp: address of the root of the tree |
| 32 | 32 |
* compar: function to carry out node comparisons |
| 33 | 33 |
*/ |
| ... | ... | |
| 65 | 65 |
q->rlink = (*rootp)->rlink; |
| 66 | 66 |
} |
| 67 | 67 |
} |
| 68 |
if (p != *rootp) |
|
| 69 |
free(*rootp); /* D4: Free node */ |
|
| 68 |
free(*rootp); /* D4: Free node */ |
|
| 70 | 69 |
*rootp = q; /* link parent to new node */ |
| 71 | 70 |
return p; |
| 72 | 71 |
} |
| lib/libdpv/dpv.c | ||
|---|---|---|
| 36 | 36 |
#include <dialog.h> |
| 37 | 37 |
#include <err.h> |
| 38 | 38 |
#include <limits.h> |
| 39 |
#include <locale.h> |
|
| 39 | 40 |
#include <stdio.h> |
| 40 | 41 |
#include <stdlib.h> |
| 41 | 42 |
#include <string.h> |
| ... | ... | |
| 482 | 483 |
/* Reads: label_size pbar_size pprompt aprompt dpv_nfiles */ |
| 483 | 484 |
/* Inits: dheight and dwidth */ |
| 484 | 485 | |
| 486 |
/* Default localeconv(3) settings for dialog(3) status */ |
|
| 487 |
setlocale(LC_NUMERIC, |
|
| 488 |
getenv("LC_ALL") == NULL && getenv("LC_NUMERIC") == NULL ?
|
|
| 489 |
LC_NUMERIC_DEFAULT : ""); |
|
| 490 | ||
| 485 | 491 |
if (!debug) {
|
| 486 | 492 |
/* Internally create the initial `--gauge' prompt text */ |
| 487 | 493 |
dprompt_recreate(file_list, (struct dpv_file_node *)NULL, 0); |
| lib/libdpv/dpv.h | ||
|---|---|---|
| 38 | 38 |
#define FALSE 0 |
| 39 | 39 |
#endif |
| 40 | 40 | |
| 41 |
/* localeconv(3) */ |
|
| 42 |
#define LC_NUMERIC_DEFAULT "en_US.ISO8859-1" |
|
| 43 | ||
| 41 | 44 |
/* Data to process */ |
| 42 | 45 |
extern long long dpv_overall_read; |
| 43 | 46 | |
| release/doc/share/xml/security.xml | ||
|---|---|---|
| 107 | 107 |
<entry><para><application>OpenSSH</application> client |
| 108 | 108 |
information leak</para></entry> |
| 109 | 109 |
</row> |
| 110 | ||
| 111 |
<row> |
|
| 112 |
<entry><link |
|
| 113 |
xlink:href="&security.url;/FreeBSD-SA-16:09.ntp.asc">FreeBSD-SA-16:09.ntp</link></entry> |
|
| 114 |
<entry>27 January 2016</entry> |
|
| 115 |
<entry><para>Multiple vulnerabilities.</para></entry> |
|
| 116 |
</row> |
|
| 117 | ||
| 118 |
<row> |
|
| 119 |
<entry><link |
|
| 120 |
xlink:href="&security.url;/FreeBSD-SA-16:10.linux.asc">FreeBSD-SA-16:10.linux</link></entry> |
|
| 121 |
<entry>27 January 2016</entry> |
|
| 122 |
<entry><para>&man.issetugid.2; system call |
|
| 123 |
vulnerability.</para></entry> |
|
| 124 |
</row> |
|
| 110 | 125 |
</tbody> |
| 111 | 126 |
</tgroup> |
| 112 | 127 |
</informaltable> |
| sbin/pfctl/pfctl.c | ||
|---|---|---|
| 834 | 834 |
printf(" [ Inserted: pid %u "
|
| 835 | 835 |
"State Creations: %-6ju]\n", |
| 836 | 836 |
(unsigned)rule->cpid, |
| 837 |
(uintmax_t)rule->states_tot); |
|
| 837 |
(uintmax_t)rule->u_states_tot);
|
|
| 838 | 838 |
#endif |
| 839 | 839 |
} |
| 840 | 840 |
} |
| share/dtrace/Makefile | ||
|---|---|---|
| 12 | 12 |
_toolkit= toolkit |
| 13 | 13 |
.endif |
| 14 | 14 | |
| 15 |
SCRIPTS= nfsclienttime hotopen |
|
| 15 |
SCRIPTS= nfsclienttime hotopen \ |
|
| 16 |
watch_execve \ |
|
| 17 |
watch_kill \ |
|
| 18 |
watch_vop_remove |
|
| 16 | 19 | |
| 17 | 20 |
SCRIPTSDIR= ${SHAREDIR}/dtrace
|
| 18 | 21 | |
| share/dtrace/watch_execve | ||
|---|---|---|
| 1 |
#!/usr/sbin/dtrace -s |
|
| 2 |
/* - |
|
| 3 |
* Copyright (c) 2014 Devin Teske <dteske@FreeBSD.org> |
|
| 4 |
* All rights reserved. |
|
| 5 |
* Redistribution and use in source and binary forms, with or without |
|
| 6 |
* modification, are permitted provided that the following conditions |
|
| 7 |
* are met: |
|
| 8 |
* 1. Redistributions of source code must retain the above copyright |
|
| 9 |
* notice, this list of conditions and the following disclaimer. |
|
| 10 |
* 2. Redistributions in binary form must reproduce the above copyright |
|
| 11 |
* notice, this list of conditions and the following disclaimer in the |
|
| 12 |
* documentation and/or other materials provided with the distribution. |
|
| 13 |
* |
|
| 14 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
|
| 15 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
| 16 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
| 17 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
|
| 18 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
| 19 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
| 20 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
| 21 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
| 22 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
| 23 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
| 24 |
* SUCH DAMAGE. |
|
| 25 |
* |
|
| 26 |
* $Title: dtrace(1) script to log process(es) entering syscall::execve $ |
|
| 27 |
* $FreeBSD$ |
|
| 28 |
*/ |
|
| 29 | ||
| 30 |
#pragma D option quiet |
|
| 31 |
#pragma D option dynvarsize=16m |
|
| 32 |
#pragma D option switchrate=10hz |
|
| 33 | ||
| 34 |
/*********************************************************/ |
|
| 35 | ||
| 36 |
syscall::execve:entry /* probe ID 1 */ |
|
| 37 |
{
|
|
| 38 |
this->caller_execname = execname; |
|
| 39 |
} |
|
| 40 | ||
| 41 |
/*********************************************************/ |
|
| 42 | ||
| 43 |
syscall::execve:return /execname != this->caller_execname/ /* probe ID 2 */ |
|
| 44 |
{
|
|
| 45 |
/* |
|
| 46 |
* Examine process, parent process, and grandparent process details |
|
| 47 |
*/ |
|
| 48 | ||
| 49 |
/******************* CURPROC *******************/ |
|
| 50 | ||
| 51 |
this->proc = curthread->td_proc; |
|
| 52 |
this->pid0 = this->proc->p_pid; |
|
| 53 |
this->uid0 = this->proc->p_ucred->cr_uid; |
|
| 54 |
this->gid0 = this->proc->p_ucred->cr_rgid; |
|
| 55 |
this->p_args = this->proc->p_args; |
|
| 56 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 57 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 58 | ||
| 59 |
this->arg0_0 = this->ar_length > 0 ? |
|
| 60 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 61 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 62 |
this->ar_args += this->len; |
|
| 63 |
this->ar_length -= this->len; |
|
| 64 | ||
| 65 |
this->arg0_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 66 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 67 |
this->ar_args += this->len; |
|
| 68 |
this->ar_length -= this->len; |
|
| 69 | ||
| 70 |
this->arg0_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 71 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 72 |
this->ar_args += this->len; |
|
| 73 |
this->ar_length -= this->len; |
|
| 74 | ||
| 75 |
this->arg0_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 76 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 77 |
this->ar_args += this->len; |
|
| 78 |
this->ar_length -= this->len; |
|
| 79 | ||
| 80 |
this->arg0_4 = this->ar_length > 0 ? "..." : ""; |
|
| 81 | ||
| 82 |
/******************* PPARENT *******************/ |
|
| 83 | ||
| 84 |
this->proc = this->proc->p_pptr; |
|
| 85 |
this->pid1 = this->proc->p_pid; |
|
| 86 |
this->uid1 = this->proc->p_ucred->cr_uid; |
|
| 87 |
this->gid1 = this->proc->p_ucred->cr_rgid; |
|
| 88 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 89 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 90 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 91 | ||
| 92 |
this->arg1_0 = this->ar_length > 0 ? |
|
| 93 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 94 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 95 |
this->ar_args += this->len; |
|
| 96 |
this->ar_length -= this->len; |
|
| 97 | ||
| 98 |
this->arg1_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 99 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 100 |
this->ar_args += this->len; |
|
| 101 |
this->ar_length -= this->len; |
|
| 102 | ||
| 103 |
this->arg1_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 104 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 105 |
this->ar_args += this->len; |
|
| 106 |
this->ar_length -= this->len; |
|
| 107 | ||
| 108 |
this->arg1_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 109 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 110 |
this->ar_args += this->len; |
|
| 111 |
this->ar_length -= this->len; |
|
| 112 | ||
| 113 |
this->arg1_4 = this->ar_length > 0 ? "..." : ""; |
|
| 114 | ||
| 115 |
/******************* GPARENT *******************/ |
|
| 116 | ||
| 117 |
this->proc = this->proc->p_pptr; |
|
| 118 |
this->pid2 = this->proc->p_pid; |
|
| 119 |
this->uid2 = this->proc->p_ucred->cr_uid; |
|
| 120 |
this->gid2 = this->proc->p_ucred->cr_rgid; |
|
| 121 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 122 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 123 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 124 | ||
| 125 |
this->arg2_0 = this->ar_length > 0 ? |
|
| 126 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 127 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 128 |
this->ar_args += this->len; |
|
| 129 |
this->ar_length -= this->len; |
|
| 130 | ||
| 131 |
this->arg2_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 132 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 133 |
this->ar_args += this->len; |
|
| 134 |
this->ar_length -= this->len; |
|
| 135 | ||
| 136 |
this->arg2_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 137 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 138 |
this->ar_args += this->len; |
|
| 139 |
this->ar_length -= this->len; |
|
| 140 | ||
| 141 |
this->arg2_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 142 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 143 |
this->ar_args += this->len; |
|
| 144 |
this->ar_length -= this->len; |
|
| 145 | ||
| 146 |
this->arg2_4 = this->ar_length > 0 ? "..." : ""; |
|
| 147 | ||
| 148 |
/******************* APARENT *******************/ |
|
| 149 | ||
| 150 |
this->proc = this->proc->p_pptr; |
|
| 151 |
this->pid3 = this->proc->p_pid; |
|
| 152 |
this->uid3 = this->proc->p_ucred->cr_uid; |
|
| 153 |
this->gid3 = this->proc->p_ucred->cr_rgid; |
|
| 154 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 155 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 156 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 157 | ||
| 158 |
this->arg3_0 = this->ar_length > 0 ? |
|
| 159 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 160 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 161 |
this->ar_args += this->len; |
|
| 162 |
this->ar_length -= this->len; |
|
| 163 | ||
| 164 |
this->arg3_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 165 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 166 |
this->ar_args += this->len; |
|
| 167 |
this->ar_length -= this->len; |
|
| 168 | ||
| 169 |
this->arg3_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 170 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 171 |
this->ar_args += this->len; |
|
| 172 |
this->ar_length -= this->len; |
|
| 173 | ||
| 174 |
this->arg3_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 175 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 176 |
this->ar_args += this->len; |
|
| 177 |
this->ar_length -= this->len; |
|
| 178 | ||
| 179 |
this->arg3_4 = this->ar_length > 0 ? "..." : ""; |
|
| 180 | ||
| 181 |
/***********************************************/ |
|
| 182 | ||
| 183 |
/* |
|
| 184 |
* Print process, parent, and grandparent details |
|
| 185 |
*/ |
|
| 186 | ||
| 187 |
printf("%Y %s[%d]: ", timestamp + 1406598400000000000,
|
|
| 188 |
this->caller_execname, this->pid1); |
|
| 189 |
printf("%s", this->arg0_0);
|
|
| 190 |
printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1);
|
|
| 191 |
printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2);
|
|
| 192 |
printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3);
|
|
| 193 |
printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4);
|
|
| 194 |
printf("\n");
|
|
| 195 | ||
| 196 |
printf(" -+= %05d %d.%d %s",
|
|
| 197 |
this->pid3, this->uid3, this->gid3, this->arg3_0); |
|
| 198 |
printf("%s%s", this->arg3_1 != "" ? " " : "", this->arg3_1);
|
|
| 199 |
printf("%s%s", this->arg3_2 != "" ? " " : "", this->arg3_2);
|
|
| 200 |
printf("%s%s", this->arg3_3 != "" ? " " : "", this->arg3_3);
|
|
| 201 |
printf("%s%s", this->arg3_4 != "" ? " " : "", this->arg3_4);
|
|
| 202 |
printf("%s", this->arg3_0 != "" ? "\n" : "");
|
|
| 203 | ||
| 204 |
printf(" \-+= %05d %d.%d %s",
|
|
| 205 |
this->pid2, this->uid2, this->gid2, this->arg2_0); |
|
| 206 |
printf("%s%s", this->arg2_1 != "" ? " " : "", this->arg2_1);
|
|
| 207 |
printf("%s%s", this->arg2_2 != "" ? " " : "", this->arg2_2);
|
|
| 208 |
printf("%s%s", this->arg2_3 != "" ? " " : "", this->arg2_3);
|
|
| 209 |
printf("%s%s", this->arg2_4 != "" ? " " : "", this->arg2_4);
|
|
| 210 |
printf("%s", this->arg2_0 != "" ? "\n" : "");
|
|
| 211 | ||
| 212 |
printf(" \-+= %05d %d.%d %s",
|
|
| 213 |
this->pid1, this->uid1, this->gid1, this->arg1_0); |
|
| 214 |
printf("%s%s", this->arg1_1 != "" ? " " : "", this->arg1_1);
|
|
| 215 |
printf("%s%s", this->arg1_2 != "" ? " " : "", this->arg1_2);
|
|
| 216 |
printf("%s%s", this->arg1_3 != "" ? " " : "", this->arg1_3);
|
|
| 217 |
printf("%s%s", this->arg1_4 != "" ? " " : "", this->arg1_4);
|
|
| 218 |
printf("%s", this->arg1_0 != "" ? "\n" : "");
|
|
| 219 | ||
| 220 |
printf(" \-+= %05d %d.%d %s",
|
|
| 221 |
this->pid0, this->uid0, this->gid0, this->arg0_0); |
|
| 222 |
printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1);
|
|
| 223 |
printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2);
|
|
| 224 |
printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3);
|
|
| 225 |
printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4);
|
|
| 226 |
printf("%s", this->arg0_0 != "" ? "\n" : "");
|
|
| 227 |
} |
|
| share/dtrace/watch_kill | ||
|---|---|---|
| 1 |
#!/usr/sbin/dtrace -s |
|
| 2 |
/* - |
|
| 3 |
* Copyright (c) 2014-2016 Devin Teske <dteske@FreeBSD.org> |
|
| 4 |
* All rights reserved. |
|
| 5 |
* Redistribution and use in source and binary forms, with or without |
|
| 6 |
* modification, are permitted provided that the following conditions |
|
| 7 |
* are met: |
|
| 8 |
* 1. Redistributions of source code must retain the above copyright |
|
| 9 |
* notice, this list of conditions and the following disclaimer. |
|
| 10 |
* 2. Redistributions in binary form must reproduce the above copyright |
|
| 11 |
* notice, this list of conditions and the following disclaimer in the |
|
| 12 |
* documentation and/or other materials provided with the distribution. |
|
| 13 |
* |
|
| 14 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
|
| 15 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
| 16 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
| 17 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
|
| 18 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
| 19 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
| 20 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
| 21 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
| 22 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
| 23 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
| 24 |
* SUCH DAMAGE. |
|
| 25 |
* |
|
| 26 |
* $Title: dtrace(1) script to log process(es) entering syscall::kill $ |
|
| 27 |
* $FreeBSD$ |
|
| 28 |
*/ |
|
| 29 | ||
| 30 |
#pragma D option quiet |
|
| 31 |
#pragma D option dynvarsize=16m |
|
| 32 |
#pragma D option switchrate=10hz |
|
| 33 | ||
| 34 |
/*********************************************************/ |
|
| 35 | ||
| 36 |
syscall::execve:entry /* probe ID 1 */ |
|
| 37 |
{
|
|
| 38 |
this->caller_execname = execname; |
|
| 39 |
} |
|
| 40 | ||
| 41 |
/*********************************************************/ |
|
| 42 | ||
| 43 |
syscall::kill:entry /* probe ID 2 */ |
|
| 44 |
{
|
|
| 45 |
this->pid_to_kill = (pid_t)arg0; |
|
| 46 |
this->kill_signal = (int)arg1; |
|
| 47 | ||
| 48 |
/* |
|
| 49 |
* Examine process, parent process, and grandparent process details |
|
| 50 |
*/ |
|
| 51 | ||
| 52 |
/******************* CURPROC *******************/ |
|
| 53 | ||
| 54 |
this->proc = curthread->td_proc; |
|
| 55 |
this->pid0 = this->proc->p_pid; |
|
| 56 |
this->uid0 = this->proc->p_ucred->cr_uid; |
|
| 57 |
this->gid0 = this->proc->p_ucred->cr_rgid; |
|
| 58 |
this->p_args = this->proc->p_args; |
|
| 59 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 60 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 61 | ||
| 62 |
this->arg0_0 = this->ar_length > 0 ? |
|
| 63 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 64 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 65 |
this->ar_args += this->len; |
|
| 66 |
this->ar_length -= this->len; |
|
| 67 | ||
| 68 |
this->arg0_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 69 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 70 |
this->ar_args += this->len; |
|
| 71 |
this->ar_length -= this->len; |
|
| 72 | ||
| 73 |
this->arg0_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 74 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 75 |
this->ar_args += this->len; |
|
| 76 |
this->ar_length -= this->len; |
|
| 77 | ||
| 78 |
this->arg0_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 79 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 80 |
this->ar_args += this->len; |
|
| 81 |
this->ar_length -= this->len; |
|
| 82 | ||
| 83 |
this->arg0_4 = this->ar_length > 0 ? "..." : ""; |
|
| 84 | ||
| 85 |
/******************* PPARENT *******************/ |
|
| 86 | ||
| 87 |
this->proc = this->proc->p_pptr; |
|
| 88 |
this->pid1 = this->proc->p_pid; |
|
| 89 |
this->uid1 = this->proc->p_ucred->cr_uid; |
|
| 90 |
this->gid1 = this->proc->p_ucred->cr_rgid; |
|
| 91 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 92 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 93 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 94 | ||
| 95 |
this->arg1_0 = this->ar_length > 0 ? |
|
| 96 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 97 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 98 |
this->ar_args += this->len; |
|
| 99 |
this->ar_length -= this->len; |
|
| 100 | ||
| 101 |
this->arg1_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 102 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 103 |
this->ar_args += this->len; |
|
| 104 |
this->ar_length -= this->len; |
|
| 105 | ||
| 106 |
this->arg1_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 107 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 108 |
this->ar_args += this->len; |
|
| 109 |
this->ar_length -= this->len; |
|
| 110 | ||
| 111 |
this->arg1_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 112 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 113 |
this->ar_args += this->len; |
|
| 114 |
this->ar_length -= this->len; |
|
| 115 | ||
| 116 |
this->arg1_4 = this->ar_length > 0 ? "..." : ""; |
|
| 117 | ||
| 118 |
/******************* GPARENT *******************/ |
|
| 119 | ||
| 120 |
this->proc = this->proc->p_pptr; |
|
| 121 |
this->pid2 = this->proc->p_pid; |
|
| 122 |
this->uid2 = this->proc->p_ucred->cr_uid; |
|
| 123 |
this->gid2 = this->proc->p_ucred->cr_rgid; |
|
| 124 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 125 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 126 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 127 | ||
| 128 |
this->arg2_0 = this->ar_length > 0 ? |
|
| 129 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 130 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 131 |
this->ar_args += this->len; |
|
| 132 |
this->ar_length -= this->len; |
|
| 133 | ||
| 134 |
this->arg2_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 135 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 136 |
this->ar_args += this->len; |
|
| 137 |
this->ar_length -= this->len; |
|
| 138 | ||
| 139 |
this->arg2_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 140 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 141 |
this->ar_args += this->len; |
|
| 142 |
this->ar_length -= this->len; |
|
| 143 | ||
| 144 |
this->arg2_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 145 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 146 |
this->ar_args += this->len; |
|
| 147 |
this->ar_length -= this->len; |
|
| 148 | ||
| 149 |
this->arg2_4 = this->ar_length > 0 ? "..." : ""; |
|
| 150 | ||
| 151 |
/******************* APARENT *******************/ |
|
| 152 | ||
| 153 |
this->proc = this->proc->p_pptr; |
|
| 154 |
this->pid3 = this->proc->p_pid; |
|
| 155 |
this->uid3 = this->proc->p_ucred->cr_uid; |
|
| 156 |
this->gid3 = this->proc->p_ucred->cr_rgid; |
|
| 157 |
this->p_args = this->proc ? this->proc->p_args : 0; |
|
| 158 |
this->ar_length = this->p_args ? this->p_args->ar_length : 0; |
|
| 159 |
this->ar_args = (char *)(this->p_args ? this->p_args->ar_args : 0); |
|
| 160 | ||
| 161 |
this->arg3_0 = this->ar_length > 0 ? |
|
| 162 |
this->ar_args : stringof(this->proc->p_comm); |
|
| 163 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 164 |
this->ar_args += this->len; |
|
| 165 |
this->ar_length -= this->len; |
|
| 166 | ||
| 167 |
this->arg3_1 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 168 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 169 |
this->ar_args += this->len; |
|
| 170 |
this->ar_length -= this->len; |
|
| 171 | ||
| 172 |
this->arg3_2 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 173 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 174 |
this->ar_args += this->len; |
|
| 175 |
this->ar_length -= this->len; |
|
| 176 | ||
| 177 |
this->arg3_3 = this->ar_length > 0 ? this->ar_args : ""; |
|
| 178 |
this->len = this->ar_length > 0 ? strlen(this->ar_args) + 1 : 0; |
|
| 179 |
this->ar_args += this->len; |
|
| 180 |
this->ar_length -= this->len; |
|
| 181 | ||
| 182 |
this->arg3_4 = this->ar_length > 0 ? "..." : ""; |
|
| 183 | ||
| 184 |
/***********************************************/ |
|
| 185 | ||
| 186 |
/* |
|
| 187 |
* Print process, parent, and grandparent details |
|
| 188 |
*/ |
|
| 189 | ||
| 190 |
printf("%Y %s[%d]: ", timestamp + 1406598400000000000,
|
|
| 191 |
this->caller_execname, this->pid1); |
|
| 192 |
printf("%s", this->arg0_0);
|
|
| 193 |
printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1);
|
|
| 194 |
printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2);
|
|
| 195 |
printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3);
|
|
| 196 |
printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4);
|
|
| 197 |
printf(" (sending signal %u to pid %u)",
|
|
| 198 |
this->kill_signal, this->pid_to_kill); |
|
| 199 |
printf("\n");
|
|
| 200 | ||
| 201 |
printf(" -+= %05d %d.%d %s",
|
|
| 202 |
this->pid3, this->uid3, this->gid3, this->arg3_0); |
|
| 203 |
printf("%s%s", this->arg3_1 != "" ? " " : "", this->arg3_1);
|
|
| 204 |
printf("%s%s", this->arg3_2 != "" ? " " : "", this->arg3_2);
|
|
| 205 |
printf("%s%s", this->arg3_3 != "" ? " " : "", this->arg3_3);
|
|
| 206 |
printf("%s%s", this->arg3_4 != "" ? " " : "", this->arg3_4);
|
|
| 207 |
printf("%s", this->arg3_0 != "" ? "\n" : "");
|
|
| 208 | ||
| 209 |
printf(" \-+= %05d %d.%d %s",
|
|
| 210 |
this->pid2, this->uid2, this->gid2, this->arg2_0); |
|
| 211 |
printf("%s%s", this->arg2_1 != "" ? " " : "", this->arg2_1);
|
|
| 212 |
printf("%s%s", this->arg2_2 != "" ? " " : "", this->arg2_2);
|
|
| 213 |
printf("%s%s", this->arg2_3 != "" ? " " : "", this->arg2_3);
|
|
| 214 |
printf("%s%s", this->arg2_4 != "" ? " " : "", this->arg2_4);
|
|
| 215 |
printf("%s", this->arg2_0 != "" ? "\n" : "");
|
|
| 216 | ||
| 217 |
printf(" \-+= %05d %d.%d %s",
|
|
| 218 |
this->pid1, this->uid1, this->gid1, this->arg1_0); |
|
| 219 |
printf("%s%s", this->arg1_1 != "" ? " " : "", this->arg1_1);
|
|
| 220 |
printf("%s%s", this->arg1_2 != "" ? " " : "", this->arg1_2);
|
|
| 221 |
printf("%s%s", this->arg1_3 != "" ? " " : "", this->arg1_3);
|
|
| 222 |
printf("%s%s", this->arg1_4 != "" ? " " : "", this->arg1_4);
|
|
| 223 |
printf("%s", this->arg1_0 != "" ? "\n" : "");
|
|
| 224 | ||
| 225 |
printf(" \-+= %05d %d.%d %s",
|
|
| 226 |
this->pid0, this->uid0, this->gid0, this->arg0_0); |
|
| 227 |
printf("%s%s", this->arg0_1 != "" ? " " : "", this->arg0_1);
|
|
| 228 |
printf("%s%s", this->arg0_2 != "" ? " " : "", this->arg0_2);
|
|
| 229 |
printf("%s%s", this->arg0_3 != "" ? " " : "", this->arg0_3);
|
|
| 230 |
printf("%s%s", this->arg0_4 != "" ? " " : "", this->arg0_4);
|
|
| 231 |
printf("%s", this->arg0_0 != "" ? "\n" : "");
|
|
| 232 |
} |
|
| share/dtrace/watch_vop_remove | ||
|---|---|---|
| 1 |
#!/usr/sbin/dtrace -s |
|
| 2 |
/* - |
|
| 3 |
* Copyright (c) 2014 Devin Teske <dteske@FreeBSD.org> |
|
| 4 |
* All rights reserved. |
|
| 5 |
* Redistribution and use in source and binary forms, with or without |
|
| 6 |
* modification, are permitted provided that the following conditions |
|
| 7 |
* are met: |
|
| 8 |
* 1. Redistributions of source code must retain the above copyright |
|
| 9 |
* notice, this list of conditions and the following disclaimer. |
|
| 10 |
* 2. Redistributions in binary form must reproduce the above copyright |
|
| 11 |
* notice, this list of conditions and the following disclaimer in the |
|
| 12 |
* documentation and/or other materials provided with the distribution. |
|
| 13 |
* |
|
| 14 |
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND |
|
| 15 |
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
|
| 16 |
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
|
| 17 |
* ARE DISCLAIMED. IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE |
|
| 18 |
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
|
| 19 |
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
|
| 20 |
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
|
| 21 |
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
|
| 22 |
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
|
| 23 |
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
|
| 24 |
* SUCH DAMAGE. |
|
| 25 |
* |
|
| 26 |
* $Title: dtrace(1) script to log process(es) entering vfs::vop_remove $ |
|
| 27 |
* $FreeBSD$ |
|
| 28 |
*/ |
|
| 29 | ||
| 30 |
#pragma D option quiet |
|
| 31 |
#pragma D option dynvarsize=16m |
|
| 32 |
#pragma D option switchrate=10hz |
|
| 33 | ||
| 34 |
/*********************************************************/ |
|
| 35 | ||
| 36 |
vfs::vop_remove:entry /* probe ID 1 */ |
|
| 37 |
{
|
|
| 38 |
this->vp = (struct vnode *)arg0; |
|
| 39 |
this->ncp = &(this->vp->v_cache_dst) != NULL ? |
|
| 40 |
this->vp->v_cache_dst.tqh_first : 0; |
|
| 41 |
this->fi_name = args[1] ? ( |
|
| 42 |
args[1]->a_cnp != NULL ? |
|
| 43 |
stringof(args[1]->a_cnp->cn_nameptr) : "" |
|
| 44 |
) : ""; |
|
| 45 |
this->mount = this->vp->v_mount; /* ptr to vfs we are in */ |
|
| 46 |
this->fi_fs = this->mount != 0 ? |
|
| 47 |
stringof(this->mount->mnt_stat.f_fstypename) : ""; |
|
| 48 |
this->fi_mount = this->mount != 0 ? |
|
| 49 |
stringof(this->mount->mnt_stat.f_mntonname) : ""; |
|
| 50 |
this->d_name = args[0]->v_cache_dd != NULL ? |
|
| 51 |
stringof(args[0]->v_cache_dd->nc_name) : ""; |
|
| 52 |
} |
|
| 53 | ||
| 54 |
vfs::vop_remove:entry /this->vp == 0 || this->fi_fs == 0 || |
|
| 55 |
this->fi_fs == "devfs" || this->fi_fs == "" || |
|
| 56 |
this->fi_name == ""/ /* probe ID 2 */ |
|
| 57 |
{
|
|
| 58 |
this->ncp = 0; |
|
| 59 |
} |
|
| 60 | ||
| 61 |
/*********************************************************/ |
|
| 62 | ||
| 63 |
vfs::vop_remove:entry /this->ncp/ /* probe ID 3 (depth 1) */ |
|
| 64 |
{
|
|
| 65 |
this->dvp = this->ncp->nc_dvp != NULL ? ( |
|
| 66 |
&(this->ncp->nc_dvp->v_cache_dst) != NULL ? |
|
| 67 |
this->ncp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 68 |
) : 0; |
|
| 69 |
this->name1 = this->dvp != 0 ? ( |
|
| 70 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 71 |
) : ""; |
|
| 72 |
} |
|
| 73 | ||
| 74 |
vfs::vop_remove:entry /this->name1 == 0 || this->fi_fs == 0 || |
|
| 75 |
this->fi_fs == "devfs" || this->fi_fs == "" || |
|
| 76 |
this->name1 == "/" || this->name1 == ""/ /* probe ID 4 */ |
|
| 77 |
{
|
|
| 78 |
this->dvp = 0; |
|
| 79 |
} |
|
| 80 | ||
| 81 |
/*********************************************************/ |
|
| 82 | ||
| 83 |
/* |
|
| 84 |
* BEGIN Pathname-depth iterators (copy/paste as many times as-desired) |
|
| 85 |
*/ |
|
| 86 | ||
| 87 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 5 (depth 2) */ |
|
| 88 |
{
|
|
| 89 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 90 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 91 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 92 |
) : 0; |
|
| 93 |
this->name2 = this->dvp != 0 ? ( |
|
| 94 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 95 |
) : ""; |
|
| 96 |
} |
|
| 97 | ||
| 98 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 6 (depth 3) */ |
|
| 99 |
{
|
|
| 100 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 101 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 102 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 103 |
) : 0; |
|
| 104 |
this->name3 = this->dvp != 0 ? ( |
|
| 105 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 106 |
) : ""; |
|
| 107 |
} |
|
| 108 | ||
| 109 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 7 (depth 4) */ |
|
| 110 |
{
|
|
| 111 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 112 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 113 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 114 |
) : 0; |
|
| 115 |
this->name4 = this->dvp != 0 ? ( |
|
| 116 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 117 |
) : ""; |
|
| 118 |
} |
|
| 119 | ||
| 120 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 8 (depth 5) */ |
|
| 121 |
{
|
|
| 122 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 123 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 124 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 125 |
) : 0; |
|
| 126 |
this->name5 = this->dvp != 0 ? ( |
|
| 127 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 128 |
) : ""; |
|
| 129 |
} |
|
| 130 | ||
| 131 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 9 (depth 6) */ |
|
| 132 |
{
|
|
| 133 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 134 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 135 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 136 |
) : 0; |
|
| 137 |
this->name6 = this->dvp != 0 ? ( |
|
| 138 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 139 |
) : ""; |
|
| 140 |
} |
|
| 141 | ||
| 142 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 10 (depth 7) */ |
|
| 143 |
{
|
|
| 144 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 145 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 146 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 147 |
) : 0; |
|
| 148 |
this->name7 = this->dvp != 0 ? ( |
|
| 149 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 150 |
) : ""; |
|
| 151 |
} |
|
| 152 | ||
| 153 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 11 (depth 8) */ |
|
| 154 |
{
|
|
| 155 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 156 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 157 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 158 |
) : 0; |
|
| 159 |
this->name8 = this->dvp != 0 ? ( |
|
| 160 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 161 |
) : ""; |
|
| 162 |
} |
|
| 163 | ||
| 164 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 12 (depth 9) */ |
|
| 165 |
{
|
|
| 166 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 167 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 168 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 169 |
) : 0; |
|
| 170 |
this->name9 = this->dvp != 0 ? ( |
|
| 171 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 172 |
) : ""; |
|
| 173 |
} |
|
| 174 | ||
| 175 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 13 (depth 10) */ |
|
| 176 |
{
|
|
| 177 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 178 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 179 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 180 |
) : 0; |
|
| 181 |
this->name10 = this->dvp != 0 ? ( |
|
| 182 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 183 |
) : ""; |
|
| 184 |
} |
|
| 185 | ||
| 186 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 14 (depth 11) */ |
|
| 187 |
{
|
|
| 188 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 189 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 190 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 191 |
) : 0; |
|
| 192 |
this->name11 = this->dvp != 0 ? ( |
|
| 193 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 194 |
) : ""; |
|
| 195 |
} |
|
| 196 | ||
| 197 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 15 (depth 12) */ |
|
| 198 |
{
|
|
| 199 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 200 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 201 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 202 |
) : 0; |
|
| 203 |
this->name12 = this->dvp != 0 ? ( |
|
| 204 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 205 |
) : ""; |
|
| 206 |
} |
|
| 207 | ||
| 208 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 16 (depth 13) */ |
|
| 209 |
{
|
|
| 210 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 211 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 212 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 213 |
) : 0; |
|
| 214 |
this->name13 = this->dvp != 0 ? ( |
|
| 215 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 216 |
) : ""; |
|
| 217 |
} |
|
| 218 | ||
| 219 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 17 (depth 14) */ |
|
| 220 |
{
|
|
| 221 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 222 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 223 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 224 |
) : 0; |
|
| 225 |
this->name14 = this->dvp != 0 ? ( |
|
| 226 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 227 |
) : ""; |
|
| 228 |
} |
|
| 229 | ||
| 230 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 18 (depth 15) */ |
|
| 231 |
{
|
|
| 232 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 233 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 234 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 235 |
) : 0; |
|
| 236 |
this->name15 = this->dvp != 0 ? ( |
|
| 237 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 238 |
) : ""; |
|
| 239 |
} |
|
| 240 | ||
| 241 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 19 (depth 16) */ |
|
| 242 |
{
|
|
| 243 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 244 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 245 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 246 |
) : 0; |
|
| 247 |
this->name16 = this->dvp != 0 ? ( |
|
| 248 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 249 |
) : ""; |
|
| 250 |
} |
|
| 251 | ||
| 252 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 20 (depth 17) */ |
|
| 253 |
{
|
|
| 254 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 255 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 256 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 257 |
) : 0; |
|
| 258 |
this->name17 = this->dvp != 0 ? ( |
|
| 259 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 260 |
) : ""; |
|
| 261 |
} |
|
| 262 | ||
| 263 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 21 (depth 18) */ |
|
| 264 |
{
|
|
| 265 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 266 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 267 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 268 |
) : 0; |
|
| 269 |
this->name18 = this->dvp != 0 ? ( |
|
| 270 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 271 |
) : ""; |
|
| 272 |
} |
|
| 273 | ||
| 274 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 22 (depth 19) */ |
|
| 275 |
{
|
|
| 276 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 277 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 278 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 279 |
) : 0; |
|
| 280 |
this->name19 = this->dvp != 0 ? ( |
|
| 281 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 282 |
) : ""; |
|
| 283 |
} |
|
| 284 | ||
| 285 |
vfs::vop_remove:entry /this->dvp/ /* probe ID 23 (depth 20) */ |
|
| 286 |
{
|
|
| 287 |
this->dvp = this->dvp->nc_dvp != NULL ? ( |
|
| 288 |
&(this->dvp->nc_dvp->v_cache_dst) != NULL ? |
|
| 289 |
this->dvp->nc_dvp->v_cache_dst.tqh_first : 0 |
|
| 290 |
) : 0; |
|
| 291 |
this->name20 = this->dvp != 0 ? ( |
|
| 292 |
this->dvp->nc_name != 0 ? stringof(this->dvp->nc_name) : "" |
|
| 293 |
) : ""; |
|
| 294 |
} |
|
| 295 | ||
| 296 |
/* |
|
| 297 |
* END Pathname-depth iterators |
|
| 298 |
*/ |
|
| 299 | ||
| 300 |
/*********************************************************/ |
|
| 301 | ||
| 302 |
vfs::vop_remove:entry /this->fi_mount != 0/ /* probe ID 24 */ |
|
| 303 |
{
|
|
| 304 |
printf("%Y %s[%d]: ", timestamp + 1406598400000000000, execname, pid);
|
|
| 305 | ||
| 306 |
/* |
|
| 307 |
* Print full path of file to delete |
|
| 308 |
* NB: Up-to but not including the parent directory (printed below) |
|
| 309 |
*/ |
|
| 310 |
printf("%s%s", this->fi_mount, this->fi_mount != 0 ? (
|
|
| 311 |
this->fi_mount == "/" ? "" : "/" |
|
| 312 |
) : "/"); |
|
| 313 |
printf("%s%s", this->name = this->name20, this->name != "" ? "/" : "");
|
|
- « Previous
- 1
- 2
- Next »