summaryrefslogtreecommitdiff
path: root/debian/patches/0019-Let-snmp-backend-also-use-manufacturer-specific-MIBs.patch
blob: 1496b9dd98d43ffbed47d6738fc6be0bfa3b3fda (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
From c7d2479482048b92d177c28c53fc80749fe94c6e Mon Sep 17 00:00:00 2001
From: Tim Waugh <twaugh@redhat.com>
Date: Tue, 9 Aug 2016 18:11:30 +0200
Subject: Let snmp backend also use manufacturer-specific MIBs
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

 … of HP and Ricoh to obtain the device IDs of network-connected
 printers. This way we get more reliable information about make and model
 and in addition the supported page description languages, which allows one to
 identify whether an optional PostScript add-on is installed or for an
 unsupported printer which generic PPD is the best choice (requested by
 Ricoh).
Bug: https://www.cups.org/str.php?L3552
---
 backend/snmp.c | 8 ++++++++
 1 file changed, 8 insertions(+)

diff --git a/backend/snmp.c b/backend/snmp.c
index 66ac884c6..9572822a8 100644
--- a/backend/snmp.c
+++ b/backend/snmp.c
@@ -154,6 +154,8 @@ static const int	UriOID[] = { CUPS_OID_ppmPortServiceNameOrURI, 1, 1, -1 };
 static const int	LexmarkProductOID[] = { 1,3,6,1,4,1,641,2,1,2,1,2,1,-1 };
 static const int	LexmarkProductOID2[] = { 1,3,6,1,4,1,674,10898,100,2,1,2,1,2,1,-1 };
 static const int	LexmarkDeviceIdOID[] = { 1,3,6,1,4,1,641,2,1,2,1,3,1,-1 };
+static const int	HPDeviceIdOID[] = { 1,3,6,1,4,1,11,2,3,9,1,1,7,0,-1 };
+static const int	RicohDeviceIdOID[] = { 1,3,6,1,4,1,367,3,2,1,1,1,11,0,-1 };
 static const int	XeroxProductOID[] = { 1,3,6,1,4,1,128,2,1,3,1,2,0,-1 };
 static cups_array_t	*DeviceURIs = NULL;
 static int		HostNameLookups = 0;
@@ -969,9 +971,15 @@ read_snmp_response(int fd)		/* I - SNMP socket file descriptor */
 	_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
 	               packet.community, CUPS_ASN1_GET_REQUEST,
 		       DEVICE_ID, LexmarkDeviceIdOID);
+	_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+		       packet.community, CUPS_ASN1_GET_REQUEST,
+		       DEVICE_ID, RicohDeviceIdOID);
 	_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
 	               packet.community, CUPS_ASN1_GET_REQUEST,
 		       DEVICE_PRODUCT, XeroxProductOID);
+	_cupsSNMPWrite(fd, &(packet.address), CUPS_SNMP_VERSION_1,
+		       packet.community, CUPS_ASN1_GET_REQUEST,
+		       DEVICE_ID, HPDeviceIdOID);
         break;
 
     case DEVICE_DESCRIPTION :