#include "precomp.h" DWORD VerifyPortsForProtocol( PORT Port, PROTOCOL Protocol ) { DWORD dwError = 0; switch (Port.PortType) { case PORT_UNIQUE: if (Port.wPort < 0) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_WIN32_ERROR(dwError); } switch (Protocol.ProtocolType) { case PROTOCOL_UNIQUE: if ((Protocol.dwProtocol != TCP_PROTOCOL) && (Protocol.dwProtocol != UDP_PROTOCOL)) { if (Port.wPort != 0) { dwError = ERROR_INVALID_PARAMETER; BAIL_ON_WIN32_ERROR(dwError); } } break; default: dwError = ERROR_INVALID_PARAMETER; BAIL_ON_WIN32_ERROR(dwError); break; } break; default: dwError = ERROR_INVALID_PARAMETER; BAIL_ON_WIN32_ERROR(dwError); break; } error: return (dwError); } BOOL EqualPorts( IN PORT OldPort, IN PORT NewPort ) { BOOL bMatches = FALSE; if (OldPort.PortType == NewPort.PortType) { switch(OldPort.PortType) { case PORT_UNIQUE: if (OldPort.wPort == NewPort.wPort) { bMatches = TRUE; } break; } } return (bMatches); } VOID CopyPorts( IN PORT InPort, OUT PPORT pOutPort ) { memcpy( pOutPort, &InPort, sizeof(PORT) ); } BOOL MatchPorts( PORT PortToMatch, PORT PortTemplate ) { switch (PortTemplate.PortType) { case PORT_UNIQUE: if (PortToMatch.wPort) { if (PortToMatch.wPort != PortTemplate.wPort) { return (FALSE); } } break; } return (TRUE); }