summaryrefslogtreecommitdiff
path: root/backend/network.c
diff options
context:
space:
mode:
Diffstat (limited to 'backend/network.c')
-rw-r--r--backend/network.c38
1 files changed, 32 insertions, 6 deletions
diff --git a/backend/network.c b/backend/network.c
index d5827c46..387d5150 100644
--- a/backend/network.c
+++ b/backend/network.c
@@ -1,5 +1,5 @@
/*
- * "$Id: network.c 9578 2011-03-04 18:44:47Z mike $"
+ * "$Id: network.c 10389 2012-03-28 21:57:29Z mike $"
*
* Common backend network APIs for CUPS.
*
@@ -71,7 +71,7 @@ backendNetworkSideCB(
{
cups_sc_command_t command; /* Request command */
cups_sc_status_t status; /* Request/response status */
- char data[2048]; /* Request/response data */
+ char data[65536]; /* Request/response data */
int datalen; /* Request/response data size */
const char *device_id; /* 1284DEVICEID env var */
@@ -92,7 +92,7 @@ backendNetworkSideCB(
status = CUPS_SC_STATUS_NOT_IMPLEMENTED;
else if (backendDrainOutput(print_fd, device_fd))
status = CUPS_SC_STATUS_IO_ERROR;
- else
+ else
status = CUPS_SC_STATUS_OK;
datalen = 0;
@@ -119,8 +119,35 @@ backendNetworkSideCB(
if (snmp_fd >= 0)
{
+ char *dataptr; /* Pointer into data */
cups_snmp_t packet; /* Packet from printer */
+ const char *snmp_value; /* CUPS_SNMP_VALUE env var */
+ if ((snmp_value = getenv("CUPS_SNMP_VALUE")) != NULL)
+ {
+ const char *snmp_count; /* CUPS_SNMP_COUNT env var */
+ int count; /* Repetition count */
+
+ if ((snmp_count = getenv("CUPS_SNMP_COUNT")) != NULL)
+ {
+ if ((count = atoi(snmp_count)) <= 0)
+ count = 1;
+ }
+ else
+ count = 1;
+
+ for (dataptr = data + strlen(data) + 1;
+ count > 0 && dataptr < (data + sizeof(data) - 1);
+ count --, dataptr += strlen(dataptr))
+ strlcpy(dataptr, snmp_value, sizeof(data) - (dataptr - data));
+
+ fprintf(stderr, "DEBUG: Returning %s %s\n", data,
+ data + strlen(data) + 1);
+
+ status = CUPS_SC_STATUS_OK;
+ datalen = dataptr - data;
+ break;
+ }
if (!_cupsSNMPStringToOID(data, packet.object_name, CUPS_SNMP_MAX_OID))
{
@@ -141,7 +168,6 @@ backendNetworkSideCB(
{
if (_cupsSNMPRead(snmp_fd, &packet, 1.0))
{
- char *dataptr; /* Pointer into data */
int i; /* Looping var */
@@ -172,7 +198,7 @@ backendNetworkSideCB(
case CUPS_ASN1_OCTET_STRING :
if (packet.object_value.string.num_bytes < 0)
i = 0;
- else if (packet.object_value.string.num_bytes <
+ else if (packet.object_value.string.num_bytes <
(sizeof(data) - (dataptr - data)))
i = packet.object_value.string.num_bytes;
else
@@ -296,5 +322,5 @@ backendNetworkSideCB(
/*
- * End of "$Id: network.c 9578 2011-03-04 18:44:47Z mike $".
+ * End of "$Id: network.c 10389 2012-03-28 21:57:29Z mike $".
*/