4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs/*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Copyright 2007 Sun Microsystems, Inc. All rights reserved.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Use is subject to license terms.
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Licensed under the Academic Free License version 2.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#pragma ident "%Z%%M% %I% %E% SMI"
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <sys/types.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <sys/socket.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <netinet/in.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <arpa/inet.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <strings.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#undef PACKAGE_STRING
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#undef PACKAGE_VERSION
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <net-snmp/net-snmp-config.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include <net-snmp/net-snmp-includes.h>
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include "logger.h"
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#include "printer.h"
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobshrDeviceDesc_to_info(char *string, char **manufacturer, char **model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **description)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *s;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (string == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (-1);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /* if it has : and ; in it, it's probably a 1284 device id */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((strchr(string, ':') != NULL) && (strchr(string, ';') != NULL)) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(string, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, NULL, NULL);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = 0;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *description = strdup(string);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *manufacturer = strdup(string);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((s = strchr(*manufacturer, ' ')) != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *s++ = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *model = strdup(s);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic struct snmp_pdu *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_get_item(char *host, char *community, char *mib_item)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int status;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct snmp_session session, *ss;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct snmp_pdu *request = NULL, *result = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs oid Oid[MAX_OID_LEN];
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs unsigned int oid_len = MAX_OID_LEN;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /* initialize the SNMP session */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_sess_init(&session);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs session.peername = host;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs session.community = (uchar_t *)community;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs session.community_len = strlen((const char *)session.community);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs session.version = SNMP_VERSION_1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs session.retries = 0;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((ss = snmp_open(&session)) == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (NULL);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /* add the requested data */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (!read_objid(mib_item, Oid, &oid_len))
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_perror(mib_item);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /* initialize the request PDU */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs request = snmp_pdu_create(SNMP_MSG_GET);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_add_null_var(request, Oid, oid_len);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs status = snmp_synch_response(ss, request, &result);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_close(ss);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (result);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic char *
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_get_string(char *host, char *community, char *mib_item)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *result = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct snmp_pdu *response = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs response = snmp_get_item(host, community, mib_item);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((response != NULL) && (response->errstat == SNMP_ERR_NOERROR)) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs struct variable_list *v = response->variables;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (v->type == ASN_OCTET_STR) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs result = calloc(1, v->val_len + 1);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs memcpy(result, v->val.string, v->val_len);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs HAL_DEBUG(("snmp_get_string(%s, %s, %s): %s", host, community, mib_item,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs (result?result:"NULL")));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (response != NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs snmp_free_pdu(response);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (result);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_brother_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Brother printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.2435.2.3.9.1.1.7.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.2435.2.3.9.4.2.1.5.5.1.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2435.2.3.9.1.1.7.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2435.2.3.9.4.2.1.5.5.1.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_ricoh_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * OKI printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.367.3.2.1.1.1.11.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.367.3.2.1.2.1.4.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.367.3.2.1.1.1.11.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.367.3.2.1.2.1.4.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_lexmark_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Lexmark printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.641.2.1.2.1.3.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.641.2.1.2.1.6.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.641.2.1.2.1.3.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.641.2.1.2.1.6.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_xerox_phaser_printer_info(char *hostname, char *community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **manufacturer, char **model, char **description,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **serial_no, char ***command_set, char **uri)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Xerox Phaser XXXX printers store their
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.253.8.51.1.2.1.20.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Manufacturer:
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.128.2.1.3.1.1.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.23.2.32.3.2.1.10.1.16
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.23.2.32.4.1.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Model:
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.128.2.1.3.1.2.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.23.2.32.3.2.1.10.1.17
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.23.2.32.4.2.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Description SNMPv2-SMI::enterprises.253.8.53.3.2.1.2.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.253.8.53.3.2.1.3.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Uri SNMPv2-SMI::enterprises.128.2.1.3.6.23.1.5.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.253.8.51.1.2.1.20.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*manufacturer == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *manufacturer = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.128.2.1.3.1.1.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*manufacturer == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *manufacturer = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.23.2.32.3.2.1.10.1.16");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*manufacturer == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *manufacturer = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.23.2.32.4.1.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*model == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *model = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.128.2.1.3.1.2.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*model == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *model = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.23.2.32.3.2.1.10.1.17");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*model == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *model = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.23.2.32.4.2.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.253.8.53.3.2.1.3.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if ((*manufacturer != NULL) && (*model != NULL))
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = 0;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_qms_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set, char **uri)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * MINOLTA-QMS printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Prouct Name SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.1.1.16.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.2590.1.1.1.5.5.1.1.3.2
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * URI SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.2.1.3.1.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.2.1.3.1.2
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.1.1.16.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = hrDeviceDesc_to_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2590.1.1.1.5.5.1.1.3.2");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.2.1.3.1.2");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2590.1.1.2.1.5.7.14.2.2.1.3.1.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *uri = tmp;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_oki_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * OKI printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Prouct Name SNMPv2-SMI::enterprises.2001.1.2.683.1.3
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.2001.1.2.683.1.5
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2001.1.2.683.1.3");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2001.1.2.683.1.5");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_hp_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * HP printers appear to store
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.11.2.3.9.1.1.7.0
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial Number SNMPv2-SMI::enterprises.2.3.9.4.2.2.5.1.1.17
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.11.2.3.9.1.1.7.0");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2.3.9.4.2.2.5.1.1.17");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_ppm_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * The PWG portMon MIB stores
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * 1284 DevID SNMPv2-SMI::enterprises.2699.1.2.1.1.1.3`
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::enterprises.2699.1.2.1.1.1.3");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = ieee1284_devid_to_printer_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, NULL, serial_no, command_set);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_prt_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs /*
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * The Printer Printer MIB stores
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Vendor SNMPv2-SMI::mib-2.43.8.2.1.14.1.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Model SNMPv2-SMI::mib-2.43.8.2.1.15.1.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs * Serial SNMPv2-SMI::mib-2.43.8.2.1.17.1.1
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs */
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*manufacturer == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *manufacturer = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::mib-2.43.8.2.1.14.1.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*model == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *model = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::mib-2.43.8.2.1.15.1.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*serial_no == NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *serial_no = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "SNMPv2-SMI::mib-2.43.8.2.1.17.1.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (*manufacturer != NULL)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = 0;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsstatic int
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_host_resource_printer_info(char *hostname, char *community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **manufacturer, char **model, char **description,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **serial_no, char ***command_set)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc = -1;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs tmp = snmp_get_string(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs "HOST-RESOURCES-MIB::hrDeviceDescr.1");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (tmp != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = hrDeviceDesc_to_info(tmp, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs free(tmp);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsint
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobssnmp_printer_info(char *hostname, char *community, char **manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char **model, char **description, char **serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char ***command_set, char **uri)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *tmp = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs init_snmp("network-printer-probe");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs init_mib();
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (snmp_brother_printer_info(hostname, community, manufacturer, model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_ricoh_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_lexmark_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_xerox_phaser_printer_info(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs manufacturer, model, description, serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs command_set, uri) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_qms_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set, uri) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_oki_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_hp_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_ppm_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_prt_printer_info(hostname, community, manufacturer,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs model, description, serial_no, command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs } else if (snmp_host_resource_printer_info(hostname, community,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs manufacturer, model, description, serial_no,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs command_set) == 0) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (-1);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#ifdef NOTDEF
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#define NP(x) (x?x:"")
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsint
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobsmain(int ac, char *av[])
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs{
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int i;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs for (i = 1; av[i] != NULL; i++) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs char *hostname = av[i], *manufacturer = NULL, *model = NULL,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs *description = NULL, *serial_no = NULL,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs **command_set = NULL, *uri = NULL;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int rc;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs rc = snmp_printer_info(hostname, &manufacturer, &model,
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs &description, &serial_no, &command_set, &uri);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("SNMP data for %s...(%d)\n", hostname, rc);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tvendor = %s\n", NP(manufacturer));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tproduct = %s\n", NP(model));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tdescription = %s\n", NP(description));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tserial = %s\n", NP(serial_no));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tdevice = %s\n", NP(uri));
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs if (command_set != NULL) {
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs int j;
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\tcommand set = \n");
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs for (j = 0; command_set[j] != NULL; j++)
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs printf("\t\t%s\n", command_set[j]);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs }
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs return (0);
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs}
4e9cfc9a015e8ca7d41f7d018c74dc8a692305b3jacobs#endif