Skip to content

Commit 2fd5e82

Browse files
authored
Declare ext/snmp constants in stubs (#9113)
1 parent e52946e commit 2fd5e82

File tree

4 files changed

+292
-63
lines changed

4 files changed

+292
-63
lines changed

ext/snmp/php_snmp.h

Lines changed: 20 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -92,8 +92,26 @@ ZEND_END_MODULE_GLOBALS(snmp)
9292
#define SNMP_G(v) (snmp_globals.v)
9393
#endif
9494

95-
#define REGISTER_SNMP_CLASS_CONST_LONG(const_name, value) \
96-
zend_declare_class_constant_long(php_snmp_ce, const_name, sizeof(const_name)-1, (zend_long)value);
95+
#define SNMP_VALUE_LIBRARY (0 << 0)
96+
#define SNMP_VALUE_PLAIN (1 << 0)
97+
#define SNMP_VALUE_OBJECT (1 << 1)
98+
99+
#define PHP_SNMP_ERRNO_NOERROR 0
100+
#define PHP_SNMP_ERRNO_GENERIC (1 << 1)
101+
#define PHP_SNMP_ERRNO_TIMEOUT (1 << 2)
102+
#define PHP_SNMP_ERRNO_ERROR_IN_REPLY (1 << 3)
103+
#define PHP_SNMP_ERRNO_OID_NOT_INCREASING (1 << 4)
104+
#define PHP_SNMP_ERRNO_OID_PARSING_ERROR (1 << 5)
105+
#define PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES (1 << 6)
106+
#define PHP_SNMP_ERRNO_ANY ( \
107+
PHP_SNMP_ERRNO_GENERIC | \
108+
PHP_SNMP_ERRNO_TIMEOUT | \
109+
PHP_SNMP_ERRNO_ERROR_IN_REPLY | \
110+
PHP_SNMP_ERRNO_OID_NOT_INCREASING | \
111+
PHP_SNMP_ERRNO_OID_PARSING_ERROR | \
112+
PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES | \
113+
PHP_SNMP_ERRNO_NOERROR \
114+
)
97115

98116
#else
99117

ext/snmp/snmp.c

Lines changed: 4 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,6 @@
3131
#include "zend_exceptions.h"
3232
#include "zend_smart_string.h"
3333
#include "ext/spl/spl_exceptions.h"
34-
#include "snmp_arginfo.h"
3534

3635
#ifdef HAVE_SNMP
3736

@@ -63,6 +62,8 @@
6362
#include <net-snmp/net-snmp-config.h>
6463
#include <net-snmp/net-snmp-includes.h>
6564

65+
#include "snmp_arginfo.h"
66+
6667
/* For net-snmp prior to 5.4 */
6768
#ifndef HAVE_SHUTDOWN_SNMP_LOGGING
6869
extern netsnmp_log_handler *logh_head;
@@ -74,10 +75,6 @@ extern netsnmp_log_handler *logh_head;
7475
}
7576
#endif
7677

77-
#define SNMP_VALUE_LIBRARY (0 << 0)
78-
#define SNMP_VALUE_PLAIN (1 << 0)
79-
#define SNMP_VALUE_OBJECT (1 << 1)
80-
8178
typedef struct snmp_session php_snmp_session;
8279

8380
#define PHP_SNMP_ADD_PROPERTIES(a, b) \
@@ -90,23 +87,6 @@ typedef struct snmp_session php_snmp_session;
9087
} \
9188
}
9289

93-
#define PHP_SNMP_ERRNO_NOERROR 0
94-
#define PHP_SNMP_ERRNO_GENERIC (1 << 1)
95-
#define PHP_SNMP_ERRNO_TIMEOUT (1 << 2)
96-
#define PHP_SNMP_ERRNO_ERROR_IN_REPLY (1 << 3)
97-
#define PHP_SNMP_ERRNO_OID_NOT_INCREASING (1 << 4)
98-
#define PHP_SNMP_ERRNO_OID_PARSING_ERROR (1 << 5)
99-
#define PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES (1 << 6)
100-
#define PHP_SNMP_ERRNO_ANY ( \
101-
PHP_SNMP_ERRNO_GENERIC | \
102-
PHP_SNMP_ERRNO_TIMEOUT | \
103-
PHP_SNMP_ERRNO_ERROR_IN_REPLY | \
104-
PHP_SNMP_ERRNO_OID_NOT_INCREASING | \
105-
PHP_SNMP_ERRNO_OID_PARSING_ERROR | \
106-
PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES | \
107-
PHP_SNMP_ERRNO_NOERROR \
108-
)
109-
11090
ZEND_DECLARE_MODULE_GLOBALS(snmp)
11191
static PHP_GINIT_FUNCTION(snmp);
11292

@@ -2052,47 +2032,11 @@ PHP_MINIT_FUNCTION(snmp)
20522032
zend_hash_init(&php_snmp_properties, 0, NULL, free_php_snmp_properties, 1);
20532033
PHP_SNMP_ADD_PROPERTIES(&php_snmp_properties, php_snmp_property_entries);
20542034

2055-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_SUFFIX", NETSNMP_OID_OUTPUT_SUFFIX, CONST_CS | CONST_PERSISTENT);
2056-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_MODULE", NETSNMP_OID_OUTPUT_MODULE, CONST_CS | CONST_PERSISTENT);
2057-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_FULL", NETSNMP_OID_OUTPUT_FULL, CONST_CS | CONST_PERSISTENT);
2058-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NUMERIC", NETSNMP_OID_OUTPUT_NUMERIC, CONST_CS | CONST_PERSISTENT);
2059-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_UCD", NETSNMP_OID_OUTPUT_UCD, CONST_CS | CONST_PERSISTENT);
2060-
REGISTER_LONG_CONSTANT("SNMP_OID_OUTPUT_NONE", NETSNMP_OID_OUTPUT_NONE, CONST_CS | CONST_PERSISTENT);
2061-
2062-
REGISTER_LONG_CONSTANT("SNMP_VALUE_LIBRARY", SNMP_VALUE_LIBRARY, CONST_CS | CONST_PERSISTENT);
2063-
REGISTER_LONG_CONSTANT("SNMP_VALUE_PLAIN", SNMP_VALUE_PLAIN, CONST_CS | CONST_PERSISTENT);
2064-
REGISTER_LONG_CONSTANT("SNMP_VALUE_OBJECT", SNMP_VALUE_OBJECT, CONST_CS | CONST_PERSISTENT);
2065-
2066-
REGISTER_LONG_CONSTANT("SNMP_BIT_STR", ASN_BIT_STR, CONST_CS | CONST_PERSISTENT);
2067-
REGISTER_LONG_CONSTANT("SNMP_OCTET_STR", ASN_OCTET_STR, CONST_CS | CONST_PERSISTENT);
2068-
REGISTER_LONG_CONSTANT("SNMP_OPAQUE", ASN_OPAQUE, CONST_CS | CONST_PERSISTENT);
2069-
REGISTER_LONG_CONSTANT("SNMP_NULL", ASN_NULL, CONST_CS | CONST_PERSISTENT);
2070-
REGISTER_LONG_CONSTANT("SNMP_OBJECT_ID", ASN_OBJECT_ID, CONST_CS | CONST_PERSISTENT);
2071-
REGISTER_LONG_CONSTANT("SNMP_IPADDRESS", ASN_IPADDRESS, CONST_CS | CONST_PERSISTENT);
2072-
REGISTER_LONG_CONSTANT("SNMP_COUNTER", ASN_GAUGE, CONST_CS | CONST_PERSISTENT);
2073-
REGISTER_LONG_CONSTANT("SNMP_UNSIGNED", ASN_UNSIGNED, CONST_CS | CONST_PERSISTENT);
2074-
REGISTER_LONG_CONSTANT("SNMP_TIMETICKS", ASN_TIMETICKS, CONST_CS | CONST_PERSISTENT);
2075-
REGISTER_LONG_CONSTANT("SNMP_UINTEGER", ASN_UINTEGER, CONST_CS | CONST_PERSISTENT);
2076-
REGISTER_LONG_CONSTANT("SNMP_INTEGER", ASN_INTEGER, CONST_CS | CONST_PERSISTENT);
2077-
REGISTER_LONG_CONSTANT("SNMP_COUNTER64", ASN_COUNTER64, CONST_CS | CONST_PERSISTENT);
2078-
2079-
REGISTER_SNMP_CLASS_CONST_LONG("VERSION_1", SNMP_VERSION_1);
2080-
REGISTER_SNMP_CLASS_CONST_LONG("VERSION_2c", SNMP_VERSION_2c);
2081-
REGISTER_SNMP_CLASS_CONST_LONG("VERSION_2C", SNMP_VERSION_2c);
2082-
REGISTER_SNMP_CLASS_CONST_LONG("VERSION_3", SNMP_VERSION_3);
2083-
2084-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_NOERROR", PHP_SNMP_ERRNO_NOERROR);
2085-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_ANY", PHP_SNMP_ERRNO_ANY);
2086-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_GENERIC", PHP_SNMP_ERRNO_GENERIC);
2087-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_TIMEOUT", PHP_SNMP_ERRNO_TIMEOUT);
2088-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_ERROR_IN_REPLY", PHP_SNMP_ERRNO_ERROR_IN_REPLY);
2089-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_OID_NOT_INCREASING", PHP_SNMP_ERRNO_OID_NOT_INCREASING);
2090-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_OID_PARSING_ERROR", PHP_SNMP_ERRNO_OID_PARSING_ERROR);
2091-
REGISTER_SNMP_CLASS_CONST_LONG("ERRNO_MULTIPLE_SET_QUERIES", PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES);
2092-
20932035
/* Register SNMPException class */
20942036
php_snmp_exception_ce = register_class_SNMPException(spl_ce_RuntimeException);
20952037

2038+
register_snmp_symbols(module_number);
2039+
20962040
return SUCCESS;
20972041
}
20982042
/* }}} */

ext/snmp/snmp.stub.php

Lines changed: 170 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,114 @@
22

33
/** @generate-class-entries */
44

5+
/**
6+
* @var int
7+
* @cvalue NETSNMP_OID_OUTPUT_SUFFIX
8+
*/
9+
const SNMP_OID_OUTPUT_SUFFIX = UNKNOWN;
10+
/**
11+
* @var int
12+
* @cvalue NETSNMP_OID_OUTPUT_MODULE
13+
*/
14+
const SNMP_OID_OUTPUT_MODULE = UNKNOWN;
15+
/**
16+
* @var int
17+
* @cvalue NETSNMP_OID_OUTPUT_FULL
18+
*/
19+
const SNMP_OID_OUTPUT_FULL = UNKNOWN;
20+
/**
21+
* @var int
22+
* @cvalue NETSNMP_OID_OUTPUT_NUMERIC
23+
*/
24+
const SNMP_OID_OUTPUT_NUMERIC = UNKNOWN;
25+
/**
26+
* @var int
27+
* @cvalue NETSNMP_OID_OUTPUT_UCD
28+
*/
29+
const SNMP_OID_OUTPUT_UCD = UNKNOWN;
30+
/**
31+
* @var int
32+
* @cvalue NETSNMP_OID_OUTPUT_NONE
33+
*/
34+
const SNMP_OID_OUTPUT_NONE = UNKNOWN;
35+
36+
/**
37+
* @var int
38+
* @cvalue SNMP_VALUE_LIBRARY
39+
*/
40+
const SNMP_VALUE_LIBRARY = UNKNOWN;
41+
/**
42+
* @var int
43+
* @cvalue SNMP_VALUE_PLAIN
44+
*/
45+
const SNMP_VALUE_PLAIN = UNKNOWN;
46+
/**
47+
* @var int
48+
* @cvalue SNMP_VALUE_OBJECT
49+
*/
50+
const SNMP_VALUE_OBJECT = UNKNOWN;
51+
52+
/**
53+
* @var int
54+
* @cvalue ASN_BIT_STR
55+
*/
56+
const SNMP_BIT_STR = UNKNOWN;
57+
/**
58+
* @var int
59+
* @cvalue ASN_OCTET_STR
60+
*/
61+
const SNMP_OCTET_STR = UNKNOWN;
62+
/**
63+
* @var int
64+
* @cvalue ASN_OPAQUE
65+
*/
66+
const SNMP_OPAQUE = UNKNOWN;
67+
/**
68+
* @var int
69+
* @cvalue ASN_NULL
70+
*/
71+
const SNMP_NULL = UNKNOWN;
72+
/**
73+
* @var int
74+
* @cvalue ASN_OBJECT_ID
75+
*/
76+
const SNMP_OBJECT_ID = UNKNOWN;
77+
/**
78+
* @var int
79+
* @cvalue ASN_IPADDRESS
80+
*/
81+
const SNMP_IPADDRESS = UNKNOWN;
82+
/**
83+
* @var int
84+
* @cvalue ASN_GAUGE
85+
*/
86+
const SNMP_COUNTER = UNKNOWN;
87+
/**
88+
* @var int
89+
* @cvalue ASN_UNSIGNED
90+
*/
91+
const SNMP_UNSIGNED = UNKNOWN;
92+
/**
93+
* @var int
94+
* @cvalue ASN_TIMETICKS
95+
*/
96+
const SNMP_TIMETICKS = UNKNOWN;
97+
/**
98+
* @var int
99+
* @cvalue ASN_UINTEGER
100+
*/
101+
const SNMP_UINTEGER = UNKNOWN;
102+
/**
103+
* @var int
104+
* @cvalue ASN_INTEGER
105+
*/
106+
const SNMP_INTEGER = UNKNOWN;
107+
/**
108+
* @var int
109+
* @cvalue ASN_COUNTER64
110+
*/
111+
const SNMP_COUNTER64 = UNKNOWN;
112+
5113
function snmpget(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): mixed {}
6114

7115
function snmpgetnext(string $hostname, string $community, array|string $object_id, int $timeout = -1, int $retries = -1): mixed {}
@@ -75,6 +183,68 @@ function snmp_read_mib(string $filename): bool {}
75183

76184
class SNMP
77185
{
186+
/**
187+
* @var int
188+
* @cvalue SNMP_VERSION_1
189+
*/
190+
public const VERSION_1 = UNKNOWN;
191+
/**
192+
* @var int
193+
* @cvalue SNMP_VERSION_2c
194+
*/
195+
public const VERSION_2c = UNKNOWN;
196+
/**
197+
* @var int
198+
* @cvalue SNMP_VERSION_2c
199+
*/
200+
public const VERSION_2C = UNKNOWN;
201+
/**
202+
* @var int
203+
* @cvalue SNMP_VERSION_3
204+
*/
205+
public const VERSION_3 = UNKNOWN;
206+
207+
/**
208+
* @var int
209+
* @cvalue PHP_SNMP_ERRNO_NOERROR
210+
*/
211+
public const ERRNO_NOERROR = UNKNOWN;
212+
/**
213+
* @var int
214+
* @cvalue PHP_SNMP_ERRNO_ANY
215+
*/
216+
public const ERRNO_ANY = UNKNOWN;
217+
/**
218+
* @var int
219+
* @cvalue PHP_SNMP_ERRNO_GENERIC
220+
*/
221+
public const ERRNO_GENERIC = UNKNOWN;
222+
/**
223+
* @var int
224+
* @cvalue PHP_SNMP_ERRNO_TIMEOUT
225+
*/
226+
public const ERRNO_TIMEOUT = UNKNOWN;
227+
/**
228+
* @var int
229+
* @cvalue PHP_SNMP_ERRNO_ERROR_IN_REPLY
230+
*/
231+
public const ERRNO_ERROR_IN_REPLY = UNKNOWN;
232+
/**
233+
* @var int
234+
* @cvalue PHP_SNMP_ERRNO_OID_NOT_INCREASING
235+
*/
236+
public const ERRNO_OID_NOT_INCREASING = UNKNOWN;
237+
/**
238+
* @var int
239+
* @cvalue PHP_SNMP_ERRNO_OID_PARSING_ERROR
240+
*/
241+
public const ERRNO_OID_PARSING_ERROR = UNKNOWN;
242+
/**
243+
* @var int
244+
* @cvalue PHP_SNMP_ERRNO_MULTIPLE_SET_QUERIES
245+
*/
246+
public const ERRNO_MULTIPLE_SET_QUERIES = UNKNOWN;
247+
78248
/** @readonly */
79249
public array $info;
80250
public ?int $max_oids;

0 commit comments

Comments
 (0)