return false;
}
//-----------------------------------------------------------------------------
-bool LISTENER::WaitPackets(int sd) const
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- {
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- }
- return false;
- }
-
-if (res == 0) // Timeout
- {
- return false;
- }
-
-return true;
-}
-//-----------------------------------------------------------------------------
inline
void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password)
{
// Networking stuff
bool PrepareNet();
bool FinalizeNet();
- bool WaitPackets(int sd) const;
bool RecvPacket();
// Parsing stuff
bool CheckHeader(const RS_PACKET_HEADER & header) const;
return ret;
}
//-----------------------------------------------------------------------------
-bool AUTH_IA::WaitPackets(int sd) const
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- {
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- }
- return false;
- }
-
-if (res == 0) // Timeout
- {
- return false;
- }
-
-return true;
-}
-//-----------------------------------------------------------------------------
inline
void InitEncrypt(BLOWFISH_CTX * ctx, const string & password)
{
int RealSendMessage7(const STG_MSG & msg, uint32_t ip, IA_USER & user);
int RealSendMessage8(const STG_MSG & msg, uint32_t ip, IA_USER & user);
- bool WaitPackets(int sd) const;
-
BLOWFISH_CTX ctxS; //for loginS
mutable std::string errorStr;
cap->stoppedUDP = false;
while (cap->runningUDP)
{
- if (!cap->WaitPackets(cap->sockUDP))
+ if (!WaitPackets(cap->sockUDP))
{
continue;
}
cap->stoppedTCP = false;
while (cap->runningTCP)
{
- if (!cap->WaitPackets(cap->sockTCP))
+ if (!WaitPackets(cap->sockTCP))
{
continue;
}
continue;
}
- if (!cap->WaitPackets(sd))
+ if (!WaitPackets(sd))
{
close(sd);
continue;
traffCnt->Process(ip);
}
}
-
-bool NF_CAP::WaitPackets(int sd) const
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- {
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- }
- return false;
- }
-
-if (res == 0) // Timeout
- {
- return false;
- }
-
-return true;
-}
bool OpenUDP();
void CloseTCP() { close(sockTCP); }
void CloseUDP() { close(sockUDP); }
-
- bool WaitPackets(int sd) const;
};
extern "C" PLUGIN * GetPlugin();
return 0;
}
-//-----------------------------------------------------------------------------
-bool ETHER_CAP::WaitPackets(int sd) const
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- {
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- }
- return false;
- }
-
-if (res == 0) // Timeout
- {
- return false;
- }
-
-return true;
-}
int EthCapOpen();
int EthCapClose();
int EthCapRead(void * buffer, int blen, char ** iface);
- bool WaitPackets(int sd) const;
mutable std::string errorStr;
while (rad->nonstop)
{
- if (!rad->WaitPackets(rad->sock))
+ if (!WaitPackets(rad->sock))
{
continue;
}
return CanAuthService(svc) || CanAcctService(svc);
}
//-----------------------------------------------------------------------------
-bool RADIUS::WaitPackets(int sd) const
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- {
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- }
- return false;
- }
-
-if (res == 0) // Timeout
- {
- return false;
- }
-
-return true;
-}
-//-----------------------------------------------------------------------------
inline
void InitEncrypt(BLOWFISH_CTX * ctx, const std::string & password)
{
bool CanAcctService(const std::string & svc) const;
bool IsAllowedService(const std::string & svc) const;
- bool WaitPackets(int sd) const;
-
void PrintServices(const std::list<std::string> & svcs);
struct Printer : public unary_function<std::string, void>
-#include <sys/select.h>
#include <unistd.h> // write
#include <cstring> // memset
#include "pen.h"
#include "utils.h"
-bool WaitPackets(int sd)
-{
-fd_set rfds;
-FD_ZERO(&rfds);
-FD_SET(sd, &rfds);
-
-struct timeval tv;
-tv.tv_sec = 0;
-tv.tv_usec = 500000;
-
-int res = select(sd + 1, &rfds, NULL, NULL, &tv);
-if (res == -1) // Error
- {
- if (errno != EINTR)
- printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
- return false;
- }
-
-if (res == 0) // Timeout
- return false;
-
-return true;
-}
-
bool String2OI(const std::string & str, OBJECT_IDENTIFIER_t * oi)
{
size_t left = 0, pos = 0, arcPos = 0;
char buffer[1024];
error = der_encode_to_buffer(&asn_DEF_OpenPDU, &msg, buffer, sizeof(buffer));
+ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_OpenPDU, &msg);
+
if (error.encoded == -1)
{
printfd(__FILE__, "Could not encode OpenPDU (at %s)\n",
asn_enc_rval_t error;
error = der_encode_to_buffer(&asn_DEF_ClosePDU, &msg, buffer, sizeof(buffer));
+ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_ClosePDU, &msg);
+
if (error.encoded == -1)
{
printfd(__FILE__, "Could not encode ClosePDU (at %s)\n",
char buffer[1024];
error = der_encode_to_buffer(&asn_DEF_RReqPDU, &msg, buffer, sizeof(buffer));
+ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_RReqPDU, &msg);
+
if (error.encoded == -1)
{
printfd(__FILE__, "Could not encode RReqPDU (at %s)\n",
return NULL;
asn_dec_rval_t error;
error = ber_decode(0, &asn_DEF_SMUX_PDUs, (void **)&pdus, buffer, length);
+
if(error.code != RC_OK)
{
printfd(__FILE__, "Failed to decode PDUs at byte %ld\n",
error = der_encode_to_buffer(&asn_DEF_GetResponse_PDU, &msg, buffer,
sizeof(buffer));
+ASN_STRUCT_FREE_CONTENTS_ONLY(asn_DEF_GetResponse_PDU, &msg);
+
if (error.encoded == -1)
{
printfd(__FILE__, "Could not encode GetResponsePDU for error (at %s)\n",
#include "stg/SMUX-PDUs.h"
#include "stg/GetResponse-PDU.h"
-bool WaitPackets(int sd);
bool String2OI(const std::string & str, OBJECT_IDENTIFIER_t * oi);
std::string OI2String(OBJECT_IDENTIFIER_t * oi);
bool SendOpenPDU(int fd);
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
+#include <sys/select.h>
#endif
#include <iconv.h>
return 0;
}
+
+bool WaitPackets(int sd)
+{
+fd_set rfds;
+FD_ZERO(&rfds);
+FD_SET(sd, &rfds);
+
+struct timeval tv;
+tv.tv_sec = 0;
+tv.tv_usec = 500000;
+
+int res = select(sd + 1, &rfds, NULL, NULL, &tv);
+if (res == -1) // Error
+ {
+ if (errno != EINTR)
+ printfd(__FILE__, "Error on select: '%s'\n", strerror(errno));
+ return false;
+ }
+
+if (res == 0) // Timeout
+ return false;
+
+return true;
+}
unsigned max, unsigned * val);
int ParseYesNo(const std::string & str, bool * val);
+bool WaitPackets(int sd);
+
//-----------------------------------------------------------------------------
template <typename varT>
int str2x(const std::string & str, varT & x)