f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby/*
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * CDDL HEADER START
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby *
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * The contents of this file are subject to the terms of the
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * Common Development and Distribution License (the "License").
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * You may not use this file except in compliance with the License.
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby *
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * or http://www.opensolaris.org/os/licensing.
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * See the License for the specific language governing permissions
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * and limitations under the License.
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby *
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * When distributing Covered Code, include this CDDL HEADER in each
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * If applicable, add the following below this CDDL HEADER, with the
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * fields enclosed by brackets "[]" replaced with your own identifying
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * information: Portions Copyright [yyyy] [name of copyright owner]
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby *
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * CDDL HEADER END
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby */
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby/*
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby * Copyright (c) 2010, Oracle and/or its affiliates. All rights reserved.
2db6d663182655cb393dc2c15668bc9293364594Joshua M. Clulow * Copyright (c) 2013, Joyent, Inc. All rights reserved.
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby */
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby#include <fmdump.h>
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby#include <stdio.h>
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby#include <time.h>
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby/*ARGSUSED*/
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbystatic int
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyinfo_short(fmd_log_t *lp, const fmd_log_record_t *rp, FILE *fp)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby char buf[32];
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_printf(fp, "%-20s %-32s\n",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_date(buf, sizeof (buf), rp), rp->rec_class);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby return (0);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby/*ARGSUSED*/
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbystatic int
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyinfo_verb1(fmd_log_t *lp, const fmd_log_record_t *rp, FILE *fp)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby char *uuid = "(absent)";
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby char buf[32];
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby (void) nvlist_lookup_string(rp->rec_nvl, FM_IREPORT_UUID, &uuid);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_printf(fp, "%-20s %-36s %s\n",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_date(buf, sizeof (buf), rp), uuid, rp->rec_class);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby return (0);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby/*ARGSUSED*/
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbystatic int
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyinfo_verb23_cmn(fmd_log_t *lp, const fmd_log_record_t *rp, FILE *fp,
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prtctl_t pctl)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby char buf[32];
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby char *uuid = "(absent)";
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby (void) nvlist_lookup_string(rp->rec_nvl, FM_IREPORT_UUID, &uuid);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_printf(fp, "%-20s.%9.9llu %s\n",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_year(buf, sizeof (buf), rp), rp->rec_nsec, uuid);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby if (pctl)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prt(rp->rec_nvl, pctl);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby else
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_print(fp, rp->rec_nvl);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby fmdump_printf(fp, "\n");
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby return (0);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbystatic int
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyinfo_verb2(fmd_log_t *lp, const fmd_log_record_t *rp, FILE *fp)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby return (info_verb23_cmn(lp, rp, fp, NULL));
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbystatic int
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyinfo_pretty(fmd_log_t *lp, const fmd_log_record_t *rp, FILE *fp)
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prtctl_t pctl;
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby int rc;
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby if ((pctl = nvlist_prtctl_alloc()) != NULL) {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prtctl_setdest(pctl, fp);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prtctlop_nvlist(pctl, fmdump_render_nvlist, NULL);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby }
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby rc = info_verb23_cmn(lp, rp, fp, pctl);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby nvlist_prtctl_free(pctl);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby return (rc);
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltbyconst fmdump_ops_t fmdump_info_ops = {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby"info", {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby{
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby"TIME CLASS",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby(fmd_log_rec_f *)info_short
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}, {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby"TIME UUID CLASS",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby(fmd_log_rec_f *)info_verb1
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}, {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby"TIME UUID",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby(fmd_log_rec_f *)info_verb2
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}, {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby"TIME UUID",
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby(fmd_log_rec_f *)info_pretty
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby}, {
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin MaltbyNULL, NULL
2db6d663182655cb393dc2c15668bc9293364594Joshua M. Clulow}, {
2db6d663182655cb393dc2c15668bc9293364594Joshua M. ClulowNULL,
2db6d663182655cb393dc2c15668bc9293364594Joshua M. Clulow(fmd_log_rec_f *)fmdump_print_json
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby} }
f6e214c7418f43af38bd8c3a557e3d0a1d311cfaGavin Maltby};