void snmp::session::get_bulk(std::map<snmp::oid, snmp::variant> & variables) { auto request = snmp_pdu_create(SNMP_MSG_GET); for (auto var : variables) { snmp_add_null_var(request, var.first.data(), var.first.size()); } auto response = perform_request(cast_session(_ss), request); for (auto var = response->variables; var; var = var->next_variable) { save_variable(variables, var); } }
std::map<snmp::oid, snmp::variant> snmp::session::walk(oid root) { std::map<snmp::oid, snmp::variant> variables; oid current_oid = root; while (current_oid.starts_with(root)) { auto request = snmp_pdu_create(SNMP_MSG_GETNEXT); snmp_add_null_var(request, current_oid.data(), current_oid.size()); auto response = perform_request(cast_session(_ss), request); auto var = response->variables; assert(var->next_variable == nullptr); save_variable(variables, var); current_oid = oid(var->name, var->name_length); } return variables; }
#include <position.h> inherit LIB_BARKEEP; string array flatterers, specials; string save_str = ""; string saved_str = ""; mixed NoKill(object attacker); int FlatterResponse(mixed args...){ string who = args[0]->GetKeyName(); if(member_array(who, flatterers) == -1){ flatterers += ({ args[0]->GetKeyName() }); flatterers = distinct_array(flatterers); save_str = save_variable(flatterers); unguarded( (: write_file("/domains/town/save/brandy.o", save_str, 1) :) ); args[0]->AddExperiencePoints(300); } this_object()->eventForce("say Thank you, "+args[0]->GetName()+". Feel free to ask me "+ "for my special menu."); return 1; } static void create() { barkeep::create(); flatterers = ({}); unguarded( (: saved_str = read_file("/domains/town/save/brandy.o") :) ); if(sizeof(saved_str)) flatterers = restore_variable(saved_str); SetKeyName("brandy"); SetAdjectives( ({ "bar", "fine", "bartender", "keeper", "good", "serving" }) );