#include "snmp_agent.h"
Go to the source code of this file.
Data Structures | |
struct | register_parameters |
struct | subtree_context_cache_s |
struct | view_parameters |
Defines | |
#define | MIB_REGISTERED_OK 0 |
#define | MIB_DUPLICATE_REGISTRATION -1 |
#define | MIB_REGISTRATION_FAILED -2 |
#define | MIB_UNREGISTERED_OK 0 |
#define | MIB_NO_SUCH_REGISTRATION -1 |
#define | MIB_UNREGISTRATION_FAILED -2 |
#define | DEFAULT_MIB_PRIORITY 127 |
#define | REGISTER_MIB(descr, var, vartype, theoid) |
#define | NUM_EXTERNAL_FDS 32 |
#define | FD_REGISTERED_OK 0 |
#define | FD_REGISTRATION_FAILED -2 |
#define | FD_UNREGISTERED_OK 0 |
#define | FD_NO_SUCH_REGISTRATION -1 |
#define | SIG_REGISTERED_OK 0 |
#define | SIG_REGISTRATION_FAILED -2 |
#define | SIG_UNREGISTERED_OK 0 |
#define | NUM_EXTERNAL_SIGS 32 |
Typedefs | |
typedef subtree_context_cache_s | subtree_context_cache |
Functions | |
void | setup_tree (void) |
subtree * | find_subtree (oid *, size_t, struct subtree *, const char *context_name) |
subtree * | find_subtree_next (oid *, size_t, struct subtree *, const char *context_name) |
subtree * | find_subtree_previous (oid *, size_t, struct subtree *, const char *context_name) |
snmp_session * | get_session_for_oid (oid *, size_t, const char *context_name) |
int | register_mib (const char *, struct variable *, size_t, size_t, oid *, size_t) |
int | register_mib_priority (const char *, struct variable *, size_t, size_t, oid *, size_t, int) |
int | register_mib_range (const char *, struct variable *, size_t, size_t, oid *, size_t, int, int, oid, struct snmp_session *) |
int | register_mib_context (const char *, struct variable *, size_t, size_t, oid *, size_t, int, int, oid, struct snmp_session *, const char *, int, int) |
int | register_mib_table_row (const char *, struct variable *, size_t, size_t, oid *, size_t, int, int, struct snmp_session *, const char *, int, int) |
int | unregister_mib (oid *, size_t) |
int | unregister_mib_priority (oid *, size_t, int) |
int | unregister_mib_range (oid *, size_t, int, int, oid) |
int | unregister_mib_context (oid *, size_t, int, int, oid, const char *) |
void | unregister_mibs_by_session (struct snmp_session *) |
subtree * | free_subtree (struct subtree *) |
int | compare_tree (const oid *, size_t, const oid *, size_t) |
int | in_a_view (oid *, size_t *, struct snmp_pdu *, int) |
int | check_access (struct snmp_pdu *pdu) |
void | register_mib_reattach (void) |
int | register_readfd (int, void(*func)(int, void *), void *) |
int | register_writefd (int, void(*func)(int, void *), void *) |
int | register_exceptfd (int, void(*func)(int, void *), void *) |
int | unregister_readfd (int) |
int | unregister_writefd (int) |
int | unregister_exceptfd (int) |
int | register_signal (int, void(*func)(int)) |
int | unregister_signal (int) |
subtree * | find_first_subtree (const char *context_name) |
subtree_context_cache * | get_top_context_cache (void) |
Variables | |
int | external_readfd [NUM_EXTERNAL_FDS] |
int | external_readfdlen |
int | external_writefd [NUM_EXTERNAL_FDS] |
int | external_writefdlen |
int | external_exceptfd [NUM_EXTERNAL_FDS] |
int | external_exceptfdlen |
void(* | external_readfdfunc [NUM_EXTERNAL_FDS])(int, void *) |
void(* | external_writefdfunc [NUM_EXTERNAL_FDS])(int, void *) |
void(* | external_exceptfdfunc [NUM_EXTERNAL_FDS])(int, void *) |
void * | external_readfd_data [NUM_EXTERNAL_FDS] |
void * | external_writefd_data [NUM_EXTERNAL_FDS] |
void * | external_exceptfd_data [NUM_EXTERNAL_FDS] |
int | external_signal_scheduled [NUM_EXTERNAL_SIGS] |
void(* | external_signal_handler [NUM_EXTERNAL_SIGS])(int) |
|
Definition at line 46 of file agent_registry.h. |
|
Definition at line 98 of file agent_registry.h. |
|
Definition at line 94 of file agent_registry.h. |
|
Definition at line 95 of file agent_registry.h. |
|
Definition at line 97 of file agent_registry.h. |
|
Definition at line 39 of file agent_registry.h. |
|
Definition at line 43 of file agent_registry.h. |
|
Definition at line 38 of file agent_registry.h. |
|
Definition at line 40 of file agent_registry.h. |
|
Definition at line 42 of file agent_registry.h. |
|
Definition at line 44 of file agent_registry.h. |
|
Definition at line 92 of file agent_registry.h. |
|
Definition at line 125 of file agent_registry.h. |
|
Value: if (register_mib(descr, (struct variable *) var, sizeof(struct vartype), \ sizeof(var)/sizeof(struct vartype), \ theoid, sizeof(theoid)/sizeof(oid)) != MIB_REGISTERED_OK ) \ DEBUGMSGTL(("register_mib", "%s registration failed\n", descr)); Definition at line 85 of file agent_registry.h. |
|
Definition at line 120 of file agent_registry.h. |
|
Definition at line 121 of file agent_registry.h. |
|
Definition at line 123 of file agent_registry.h. |
|
|
|
Definition at line 866 of file agent_registry.c. Referenced by handle_snmp_packet().
00867 { 00868 struct view_parameters view_parms; 00869 view_parms.pdu = pdu; 00870 view_parms.name = 0; 00871 view_parms.namelen = 0; 00872 view_parms.errorcode = 0; 00873 00874 if (pdu->flags & UCD_MSG_FLAG_ALWAYS_IN_VIEW) 00875 return 0; /* Enable bypassing of view-based access control */ 00876 00877 switch (pdu->version) { 00878 case SNMP_VERSION_1: 00879 case SNMP_VERSION_2c: 00880 case SNMP_VERSION_3: 00881 snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, 00882 SNMPD_CALLBACK_ACM_CHECK_INITIAL, 00883 &view_parms); 00884 return view_parms.errorcode; 00885 } 00886 return 1; 00887 } |
|
Definition at line 897 of file agent_registry.c. Referenced by nullOidLen().
00901 { 00902 register int len, res; 00903 register const oid * name1 = in_name1; 00904 register const oid * name2 = in_name2; 00905 00906 /* len = minimum of len1 and len2 */ 00907 if (len1 < len2) 00908 len = len1; 00909 else 00910 len = len2; 00911 /* find first non-matching OID */ 00912 while(len-- > 0){ 00913 res = *(name1++) - *(name2++); 00914 if (res < 0) 00915 return -1; 00916 if (res > 0) 00917 return 1; 00918 } 00919 /* both OIDs equal up to length of shorter OID */ 00920 if (len1 < len2) 00921 return -1; 00922 00923 /* name1 matches name2 for length of name2, or they are equal */ 00924 return 0; 00925 } |
|
Definition at line 74 of file agent_registry.c. Referenced by find_subtree_previous(), get_session_for_oid(), unregister_mib_context(), and unregister_mibs_by_session().
00074 { 00075 subtree_context_cache *ptr; 00076 if (!context_name) 00077 context_name = ""; 00078 DEBUGMSGTL(("find_first_subtree","looking for subtree for context: \"%s\"\n", context_name)); 00079 for(ptr = context_subtrees; ptr; ptr = ptr->next) { 00080 if (strcmp(ptr->context_name, context_name) == 0) { 00081 DEBUGMSGTL(("find_first_subtree","found one for: \"%s\"\n", context_name)); 00082 return ptr->first_subtree; 00083 } 00084 } 00085 DEBUGMSGTL(("find_first_subtree","Didn't find a subtree for: \"%s\"\n", context_name)); 00086 return NULL; 00087 } |
|
Definition at line 967 of file agent_registry.c. Referenced by create_subtree_cache(), getStatPtr(), load_subtree(), and unregister_mib_context().
00971 { 00972 struct subtree *myptr; 00973 00974 myptr = find_subtree_previous(name, len, subtree, context_name); 00975 if (myptr && snmp_oid_compare(name, len, myptr->end, myptr->end_len) < 0) 00976 return myptr; 00977 00978 return NULL; 00979 } |
|
Definition at line 947 of file agent_registry.c. Referenced by getStatPtr(), and load_subtree().
00951 { 00952 struct subtree *myptr = NULL; 00953 00954 myptr = find_subtree_previous(name, len, subtree, context_name); 00955 if ( myptr != NULL ) { 00956 myptr = myptr->next; 00957 while ( myptr && (myptr->variables == NULL || myptr->variables_len == 0) ) 00958 myptr = myptr->next; 00959 return myptr; 00960 } 00961 else if (subtree && snmp_oid_compare(name, len, subtree->start, subtree->start_len) < 0) 00962 return subtree; 00963 else 00964 return NULL; 00965 } |
|
Definition at line 927 of file agent_registry.c. Referenced by find_subtree(), find_subtree_next(), get_session_for_oid(), and load_subtree().
00931 { 00932 struct subtree *myptr, *previous = NULL; 00933 00934 if ( subtree ) 00935 myptr = subtree; 00936 else 00937 myptr = find_first_subtree(context_name); /* look through everything */ 00938 00939 for( ; myptr != NULL; previous = myptr, myptr = myptr->next) { 00940 if (snmp_oid_compare(name, len, myptr->start, myptr->start_len) < 0) { 00941 return previous; 00942 } 00943 } 00944 return previous; 00945 } |
|
Definition at line 806 of file agent_registry.c. Referenced by load_subtree(), register_mib_context2(), unregister_mib_context(), and unregister_mibs_by_session().
00807 { 00808 struct subtree *ret = NULL; 00809 00810 if (st->variables != NULL && 00811 snmp_oid_compare(st->name, st->namelen, st->start, st->start_len) == 0) { 00812 free(st->variables); 00813 st->variables = NULL; 00814 } 00815 if (st->next != NULL) { 00816 ret = st->next; 00817 } 00818 free(st); 00819 return ret; 00820 } |
|
Definition at line 981 of file agent_registry.c. 00983 { 00984 struct subtree *myptr; 00985 00986 myptr = find_subtree_previous(name, len, find_first_subtree(context_name), 00987 context_name); 00988 while ( myptr && myptr->variables == NULL ) 00989 myptr = myptr->next; 00990 00991 if ( myptr == NULL ) 00992 return NULL; 00993 else 00994 return myptr->session; 00995 } |
|
Definition at line 69 of file agent_registry.c. 00069 { 00070 return context_subtrees; 00071 } |
|
Definition at line 831 of file agent_registry.c. Referenced by check_acm(), create_subtree_cache(), and nullOidLen().
00835 { 00836 00837 struct view_parameters view_parms; 00838 view_parms.pdu = pdu; 00839 view_parms.name = name; 00840 if (namelen) 00841 view_parms.namelen = *namelen; 00842 else 00843 view_parms.namelen = 0; 00844 view_parms.errorcode = 0; 00845 00846 if (pdu->flags & UCD_MSG_FLAG_ALWAYS_IN_VIEW) 00847 return VACM_SUCCESS; /* Enable bypassing of view-based access control */ 00848 00849 /* check for v1 and counter64s, since snmpv1 doesn't support it */ 00850 if (pdu->version == SNMP_VERSION_1 && type == ASN_COUNTER64) 00851 return VACM_NOTINVIEW; 00852 switch (pdu->version) { 00853 case SNMP_VERSION_1: 00854 case SNMP_VERSION_2c: 00855 case SNMP_VERSION_3: 00856 snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_ACM_CHECK, 00857 &view_parms); 00858 return view_parms.errorcode; 00859 } 00860 return VACM_NOSECNAME; 00861 } |
|
Definition at line 1097 of file agent_registry.c. 01097 { 01098 if (external_exceptfdlen < NUM_EXTERNAL_FDS) { 01099 external_exceptfd[external_exceptfdlen] = fd; 01100 external_exceptfdfunc[external_exceptfdlen] = func; 01101 external_exceptfd_data[external_exceptfdlen] = data; 01102 external_exceptfdlen++; 01103 DEBUGMSGTL(("register_exceptfd", "registered fd %d\n", fd)); 01104 return FD_REGISTERED_OK; 01105 } else { 01106 snmp_log(LOG_CRIT, "register_exceptfd: too many file descriptors\n"); 01107 return FD_REGISTRATION_FAILED; 01108 } 01109 } |
|
Definition at line 565 of file agent_registry.c. 00571 { 00572 return register_mib_priority( moduleName, var, varsize, numvars, 00573 mibloc, mibloclen, DEFAULT_MIB_PRIORITY ); 00574 } |
|
Definition at line 481 of file agent_registry.c. Referenced by register_mib_range().
00493 { 00494 return register_old_api(moduleName, var, varsize, numvars, mibloc, 00495 mibloclen, priority, 00496 range_subid, range_ubound, 00497 ss, context, timeout, flags); 00498 } |
|
Definition at line 552 of file agent_registry.c. Referenced by register_mib().
00559 { 00560 return register_mib_range( moduleName, var, varsize, numvars, 00561 mibloc, mibloclen, priority, 0, 0, NULL ); 00562 } |
|
Definition at line 535 of file agent_registry.c. Referenced by register_mib_priority().
00545 { 00546 return register_mib_context( moduleName, var, varsize, numvars, 00547 mibloc, mibloclen, priority, 00548 range_subid, range_ubound, ss, "", -1, 0); 00549 } |
|
Definition at line 527 of file agent_registry.c. 00527 { 00528 subtree_context_cache *ptr; 00529 for(ptr = context_subtrees; ptr; ptr = ptr->next) { 00530 register_mib_reattach_subtree(ptr->first_subtree); 00531 } 00532 } |
|
Definition at line 578 of file agent_registry.c. 00590 { 00591 struct subtree *subtree; 00592 struct register_parameters reg_parms; 00593 int rc, x; 00594 u_char *v; 00595 00596 for(x = 0; x < numvars; x++) { 00597 00598 /* 00599 * allocate a subtree for the mib registration 00600 */ 00601 subtree = (struct subtree *) malloc(sizeof(struct subtree)); 00602 if (subtree == NULL) { 00603 unregister_mib_context(mibloc, mibloclen, priority, 00604 var_subid, numvars, context); 00605 return MIB_REGISTRATION_FAILED; 00606 } 00607 00608 /* 00609 * fill in subtree 00610 */ 00611 memcpy(subtree->name, mibloc, mibloclen*sizeof(oid)); 00612 subtree->name[var_subid - 1] += x; 00613 subtree->namelen = (u_char) mibloclen; 00614 00615 memcpy(subtree->start, mibloc, mibloclen*sizeof(oid)); 00616 subtree->start[var_subid - 1] += x; 00617 subtree->start_len = (u_char) mibloclen; 00618 00619 memcpy(subtree->end, mibloc, mibloclen*sizeof(oid)); 00620 subtree->end[var_subid - 1] += x; 00621 subtree->end[mibloclen - 1]++; 00622 subtree->end_len = (u_char) mibloclen; 00623 00624 memcpy(subtree->label, moduleName, strlen(moduleName)+1); 00625 00626 if (var) { 00627 v = (u_char *)var + (x*varsize); 00628 subtree->variables = (struct variable *) malloc(varsize); 00629 memcpy(subtree->variables, v, varsize); 00630 subtree->variables_len = 1; 00631 subtree->variables_width = varsize; 00632 } 00633 00634 subtree->priority = priority; 00635 subtree->timeout = timeout; 00636 subtree->session = ss; 00637 subtree->flags = (u_char)flags; 00638 subtree->cacheid = -1; 00639 00640 /* Since we're not really making use of this in the normal way: */ 00641 00642 subtree->range_subid = 0; 00643 subtree->range_ubound = 0; 00644 00645 /* 00646 * load the subtree 00647 */ 00648 rc = load_subtree(subtree, context); 00649 if ((rc != MIB_REGISTERED_OK)) { 00650 unregister_mib_context(mibloc, mibloclen, priority, 00651 var_subid, numvars, context); 00652 return rc; 00653 } 00654 } 00655 00656 /* 00657 * fill out registration parameters 00658 */ 00659 reg_parms.name = mibloc; 00660 reg_parms.namelen = mibloclen; 00661 reg_parms.priority = priority; 00662 reg_parms.flags = (u_char)flags; 00663 reg_parms.range_subid = var_subid; 00664 reg_parms.range_ubound = (mibloc[var_subid-1] + numvars - 1); 00665 reg_parms.timeout = timeout; 00666 rc = snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, 1, ®_parms); 00667 return rc; 00668 } |
|
Definition at line 1069 of file agent_registry.c. 01069 { 01070 if (external_readfdlen < NUM_EXTERNAL_FDS) { 01071 external_readfd[external_readfdlen] = fd; 01072 external_readfdfunc[external_readfdlen] = func; 01073 external_readfd_data[external_readfdlen] = data; 01074 external_readfdlen++; 01075 DEBUGMSGTL(("register_readfd", "registered fd %d\n", fd)); 01076 return FD_REGISTERED_OK; 01077 } else { 01078 snmp_log(LOG_CRIT, "register_readfd: too many file descriptors\n"); 01079 return FD_REGISTRATION_FAILED; 01080 } 01081 } |
|
Definition at line 1184 of file agent_registry.c. 01185 { 01186 01187 switch (sig) { 01188 #if defined(SIGCHLD) 01189 case SIGCHLD: 01190 #ifdef HAVE_SIGACTION 01191 { 01192 static struct sigaction act; 01193 act.sa_handler = agent_SIGCHLD_handler; 01194 sigemptyset(&act.sa_mask); 01195 act.sa_flags = 0; 01196 sigaction(SIGCHLD, &act, NULL); 01197 } 01198 #else 01199 signal(SIGCHLD, agent_SIGCHLD_handler); 01200 #endif 01201 break; 01202 #endif 01203 default: 01204 snmp_log(LOG_CRIT, 01205 "register_signal: signal %d cannot be handled\n", sig); 01206 return SIG_REGISTRATION_FAILED; 01207 } 01208 01209 external_signal_handler[sig] = func; 01210 external_signal_scheduled[sig] = 0; 01211 01212 DEBUGMSGTL(("register_signal", "registered signal %d\n", sig)); 01213 return SIG_REGISTERED_OK; 01214 } |
|
Definition at line 1083 of file agent_registry.c. 01083 { 01084 if (external_writefdlen < NUM_EXTERNAL_FDS) { 01085 external_writefd[external_writefdlen] = fd; 01086 external_writefdfunc[external_writefdlen] = func; 01087 external_writefd_data[external_writefdlen] = data; 01088 external_writefdlen++; 01089 DEBUGMSGTL(("register_writefd", "registered fd %d\n", fd)); 01090 return FD_REGISTERED_OK; 01091 } else { 01092 snmp_log(LOG_CRIT, "register_writefd: too many file descriptors\n"); 01093 return FD_REGISTRATION_FAILED; 01094 } 01095 } |
|
Definition at line 1006 of file agent_registry.c. 01007 { 01008 #ifdef USING_AGENTX_SUBAGENT_MODULE 01009 int role; 01010 01011 role = ds_get_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE); 01012 ds_set_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE, MASTER_AGENT); 01013 #endif 01014 01015 register_null(root_subtrees[0].name, root_subtrees[0].namelen); 01016 register_null(root_subtrees[1].name, root_subtrees[1].namelen); 01017 register_null(root_subtrees[2].name, root_subtrees[2].namelen); 01018 01019 /* Support for 'static' subtrees (subtrees_old) has now been dropped */ 01020 01021 /* No longer necessary to sort the mib tree - this is inherent in 01022 the construction of the subtree structure */ 01023 01024 #ifdef USING_AGENTX_SUBAGENT_MODULE 01025 ds_set_boolean(DS_APPLICATION_ID, DS_AGENT_ROLE, role); 01026 #endif 01027 } |
|
Definition at line 1145 of file agent_registry.c. 01145 { 01146 int i, j; 01147 01148 for (i = 0; i < external_exceptfdlen; i++) { 01149 if (external_exceptfd[i] == fd) { 01150 external_exceptfdlen--; 01151 for (j = i; j < external_exceptfdlen; j++) { 01152 external_exceptfd[j] = external_exceptfd[j+1]; 01153 external_exceptfd_data[j] = external_exceptfd_data[j+1]; 01154 } 01155 DEBUGMSGTL(("unregister_exceptfd", "unregistered fd %d\n", fd)); 01156 return FD_UNREGISTERED_OK; 01157 } 01158 } 01159 return FD_NO_SUCH_REGISTRATION; 01160 } |
|
Definition at line 774 of file agent_registry.c. 00776 { 00777 return unregister_mib_priority( name, len, DEFAULT_MIB_PRIORITY ); 00778 } |
|
Definition at line 698 of file agent_registry.c. Referenced by register_mib_context2(), register_mib_table_row(), and unregister_mib_range().
00700 { 00701 struct subtree *list, *myptr; 00702 struct subtree *prev, *child; /* loop through children */ 00703 struct register_parameters reg_parms; 00704 00705 list = find_subtree( name, len, find_first_subtree(context), context ); 00706 if ( list == NULL ) 00707 return MIB_NO_SUCH_REGISTRATION; 00708 00709 for ( child=list, prev=NULL; child != NULL; 00710 prev=child, child=child->children ) { 00711 if (( snmp_oid_compare( child->name, child->namelen, name, len) == 0 ) 00712 && ( child->priority == priority )) 00713 break; /* found it */ 00714 } 00715 if ( child == NULL ) 00716 return MIB_NO_SUCH_REGISTRATION; 00717 00718 unload_subtree( child, prev ); 00719 myptr = child; /* remember this for later */ 00720 00721 /* 00722 * Now handle any occurances in the following subtrees, 00723 * as a result of splitting this range. Due to the 00724 * nature of the way such splits work, the first 00725 * subtree 'slice' that doesn't refer to the given 00726 * name marks the end of the original region. 00727 * 00728 * This should also serve to register ranges. 00729 */ 00730 00731 for ( list = myptr->next ; list != NULL ; list=list->next ) { 00732 for ( child=list, prev=NULL; child != NULL; 00733 prev=child, child=child->children ) { 00734 if (( snmp_oid_compare( child->name, child->namelen, 00735 name, len) == 0 ) 00736 && ( child->priority == priority )) { 00737 00738 unload_subtree( child, prev ); 00739 free_subtree( child ); 00740 break; 00741 } 00742 } 00743 if ( child == NULL ) /* Didn't find the given name */ 00744 break; 00745 } 00746 free_subtree( myptr ); 00747 00748 reg_parms.name = name; 00749 reg_parms.namelen = len; 00750 reg_parms.priority = priority; 00751 reg_parms.range_subid = range_subid; 00752 reg_parms.range_ubound = range_ubound; 00753 reg_parms.flags = 0x00; /* this is okay I think */ 00754 snmp_call_callbacks(SNMP_CALLBACK_APPLICATION, SNMPD_CALLBACK_UNREGISTER_OID, 00755 ®_parms); 00756 00757 return MIB_UNREGISTERED_OK; 00758 } |
|
Definition at line 768 of file agent_registry.c. Referenced by unregister_mib().
00769 { 00770 return unregister_mib_range( name, len, priority, 0, 0 ); 00771 } |
|
Definition at line 761 of file agent_registry.c. Referenced by unregister_mib_priority().
00763 { 00764 return unregister_mib_context( name, len, priority, range_subid, range_ubound, "" ); 00765 } |
|
Definition at line 781 of file agent_registry.c. 00782 { 00783 struct subtree *list, *list2; 00784 struct subtree *child, *prev, *next_child; 00785 00786 for( list = (find_first_subtree(ss->contextName)); list != NULL; 00787 list = list2) { 00788 list2 = list->next; 00789 for ( child=list, prev=NULL; child != NULL; child=next_child ) { 00790 00791 next_child = child->children; 00792 if (( (ss->flags & SNMP_FLAGS_SUBSESSION) && child->session == ss ) || 00793 (!(ss->flags & SNMP_FLAGS_SUBSESSION) && child->session && 00794 child->session->subsession == ss )) { 00795 unload_subtree( child, prev ); 00796 free_subtree( child ); 00797 } 00798 else 00799 prev = child; 00800 } 00801 } 00802 } |
|
Definition at line 1111 of file agent_registry.c. 01111 { 01112 int i, j; 01113 01114 for (i = 0; i < external_readfdlen; i++) { 01115 if (external_readfd[i] == fd) { 01116 external_readfdlen--; 01117 for (j = i; j < external_readfdlen; j++) { 01118 external_readfd[j] = external_readfd[j+1]; 01119 external_readfd_data[j] = external_readfd_data[j+1]; 01120 } 01121 DEBUGMSGTL(("unregister_readfd", "unregistered fd %d\n", fd)); 01122 return FD_UNREGISTERED_OK; 01123 } 01124 } 01125 return FD_NO_SUCH_REGISTRATION; 01126 } |
|
Definition at line 1216 of file agent_registry.c. 01216 { 01217 signal(sig, SIG_DFL); 01218 DEBUGMSGTL(("unregister_signal", "unregistered signal %d\n", sig)); 01219 return SIG_UNREGISTERED_OK; 01220 } |
|
Definition at line 1128 of file agent_registry.c. 01128 { 01129 int i, j; 01130 01131 for (i = 0; i < external_writefdlen; i++) { 01132 if (external_writefd[i] == fd) { 01133 external_writefdlen--; 01134 for (j = i; j < external_writefdlen; j++) { 01135 external_writefd[j] = external_writefd[j+1]; 01136 external_writefd_data[j] = external_writefd_data[j+1]; 01137 } 01138 DEBUGMSGTL(("unregister_writefd", "unregistered fd %d\n", fd)); 01139 return FD_UNREGISTERED_OK; 01140 } 01141 } 01142 return FD_NO_SUCH_REGISTRATION; 01143 } |
|
Definition at line 102 of file agent_registry.h. |
|
Definition at line 110 of file agent_registry.h. |
|
Definition at line 106 of file agent_registry.h. |
|
Definition at line 102 of file agent_registry.h. |
|
Definition at line 100 of file agent_registry.h. |
|
Definition at line 108 of file agent_registry.h. |
|
Definition at line 104 of file agent_registry.h. |
|
Definition at line 100 of file agent_registry.h. |
|
Definition at line 128 of file agent_registry.h. |
|
Definition at line 127 of file agent_registry.h. |
|
Definition at line 101 of file agent_registry.h. |
|
Definition at line 109 of file agent_registry.h. |
|
Definition at line 105 of file agent_registry.h. |
|
Definition at line 101 of file agent_registry.h. |
Last modified: Wednesday, 01-Aug-2018 04:41:28 UTC
For questions regarding web content and site functionality, please write to the net-snmp-users mail list.