本文整理汇总了C++中BNetworkAddress::IsEmpty方法的典型用法代码示例。如果您正苦于以下问题:C++ BNetworkAddress::IsEmpty方法的具体用法?C++ BNetworkAddress::IsEmpty怎么用?C++ BNetworkAddress::IsEmpty使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类BNetworkAddress
的用法示例。
在下文中一共展示了BNetworkAddress::IsEmpty方法的3个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: memcmp
bool
BNetworkAddress::Equals(const BNetworkAddress& other, bool includePort) const
{
if (IsEmpty() && other.IsEmpty())
return true;
if (Family() != other.Family()
|| (includePort && Port() != other.Port())) {
return false;
}
switch (fAddress.ss_family) {
case AF_INET:
{
sockaddr_in& address = (sockaddr_in&)fAddress;
sockaddr_in& otherAddress = (sockaddr_in&)other.fAddress;
return memcmp(&address.sin_addr, &otherAddress.sin_addr,
sizeof(address.sin_addr)) == 0;
}
case AF_INET6:
{
sockaddr_in6& address = (sockaddr_in6&)fAddress;
sockaddr_in6& otherAddress = (sockaddr_in6&)other.fAddress;
return memcmp(&address.sin6_addr, &otherAddress.sin6_addr,
sizeof(address.sin6_addr)) == 0;
}
default:
if (fAddress.ss_len != other.fAddress.ss_len)
return false;
return memcmp(&fAddress, &other.fAddress, fAddress.ss_len);
}
}
示例2: interface
void
configure_interface(const char* name, char* const* args, int32 argCount)
{
// try to parse address family
int32 i = 0;
int family = get_address_family(args[i]);
if (family != AF_UNSPEC)
i++;
// try to parse address
BNetworkAddress address;
BNetworkAddress mask;
if (parse_address(family, args[i], address)) {
i++;
if (parse_address(family, args[i], mask))
i++;
}
BNetworkInterface interface(name);
if (!interface.Exists()) {
// the interface does not exist yet, we have to add it first
BNetworkRoster& roster = BNetworkRoster::Default();
status_t status = roster.AddInterface(interface);
if (status != B_OK) {
fprintf(stderr, "%s: Could not add interface: %s\n", kProgramName,
strerror(status));
exit(1);
}
}
BNetworkAddress broadcast;
BNetworkAddress peer;
int mtu = -1, metric = -1, media = -1;
int addFlags = 0, currentFlags = 0, removeFlags = 0;
bool doAutoConfig = false;
// parse parameters and flags
while (i < argCount) {
if (!strcmp(args[i], "peer")) {
if (!parse_address(family, args[i + 1], peer)) {
fprintf(stderr, "%s: Option 'peer' needs valid address "
"parameter\n", kProgramName);
exit(1);
}
i++;
} else if (!strcmp(args[i], "nm") || !strcmp(args[i], "netmask")) {
if (!mask.IsEmpty()) {
fprintf(stderr, "%s: Netmask or prefix length is specified "
"twice\n", kProgramName);
exit(1);
}
if (!parse_address(family, args[i + 1], mask)) {
fprintf(stderr, "%s: Option 'netmask' needs valid address "
"parameter\n", kProgramName);
exit(1);
}
i++;
} else if (!strcmp(args[i], "prefixlen") || !strcmp(args[i], "plen")
|| !strcmp(args[i], "prefix-length")) {
if (!mask.IsEmpty()) {
fprintf(stderr, "%s: Netmask or prefix length is specified "
"twice\n", kProgramName);
exit(1);
}
// default to AF_INET if no address family has been specified yet
if (family == AF_UNSPEC)
family = AF_INET;
if (!prefix_length_to_mask(family, args[i + 1], mask)) {
fprintf(stderr, "%s: Option 'prefix-length %s' is invalid for "
"this address family\n", kProgramName, args[i + 1]);
exit(1);
}
i++;
} else if (!strcmp(args[i], "bc") || !strcmp(args[i], "broadcast")) {
if (!broadcast.IsEmpty()) {
fprintf(stderr, "%s: broadcast address is specified twice\n",
kProgramName);
exit(1);
}
if (!parse_address(family, args[i + 1], broadcast)) {
fprintf(stderr, "%s: Option 'broadcast' needs valid address "
"parameter\n", kProgramName);
exit(1);
}
addFlags |= IFF_BROADCAST;
i++;
} else if (!strcmp(args[i], "mtu")) {
mtu = args[i + 1] ? strtol(args[i + 1], NULL, 0) : 0;
if (mtu <= 500) {
fprintf(stderr, "%s: Option 'mtu' expected valid max transfer "
"unit size\n", kProgramName);
exit(1);
//.........这里部分代码省略.........
示例3: if
int
main(int argc, char** argv)
{
if (argc > 1 && (!strcmp(argv[1], "--help") || !strcmp(argv[1], "-h")))
usage(0);
int32 mode = RTM_LIST;
if (argc > 1) {
if (!strcmp(argv[1], "delete")
|| !strcmp(argv[1], "del")
|| !strcmp(argv[1], "-d")) {
// delete route
if (argc < 3)
usage(1);
mode = RTM_DELETE;
} else if (!strcmp(argv[1], "add")
|| !strcmp(argv[1], "-a")) {
// add route
if (argc < 3)
usage(1);
mode = RTM_ADD;
} else if (!strcmp(argv[1], "get")) {
// get route for destination
if (argc < 3)
usage(1);
mode = RTM_GET;
}
}
int32 i = 2;
int32 interfaceIndex = i;
bool familySpecified = false;
int32 familyIndex = 0;
const char *interface = NULL;
BNetworkAddress destination;
BNetworkAddress mask;
BNetworkAddress gateway;
bool defaultRoute = false;
route_entry route;
memset(&route, 0, sizeof(route_entry));
while (i < argc && i < 5) {
// try to parse address family
if (i <= 3 && familySpecified == false
&& get_address_family(argv[i], familyIndex)) {
familySpecified = true;
if (i == 2)
interfaceIndex = -1;
}
if (!strcmp(argv[i], "default")) {
defaultRoute = true;
route.flags = RTF_DEFAULT;
i++;
break;
} else if (parse_address(familyIndex, argv[i], destination)) {
i++;
break;
}
i++;
}
if (!defaultRoute && destination.IsEmpty() && mode != RTM_LIST)
usage(1);
if (i == 3)
interfaceIndex = -1;
if (interfaceIndex != -1 && interfaceIndex < argc)
interface = argv[interfaceIndex];
if (i < argc && parse_address(familyIndex, argv[i], mask))
i++;
// parse options and flags
while (i < argc) {
if (!strcmp(argv[i], "gw") || !strcmp(argv[i], "gateway")) {
if (!parse_address(familyIndex, argv[i + 1], gateway)) {
fprintf(stderr, "%s: Option 'gw' needs valid address "
"parameter\n", kProgramName);
exit(1);
}
i++;
} else if (!strcmp(argv[i], "nm") || !strcmp(argv[i], "netmask")) {
if (!mask.IsEmpty()) {
fprintf(stderr, "%s: Netmask or prefix length is specified "
"twice\n", kProgramName);
exit(1);
}
if (!parse_address(familyIndex, argv[i + 1], mask)) {
fprintf(stderr, "%s: Option 'netmask' needs valid address "
"parameter\n", kProgramName);
exit(1);
}
//.........这里部分代码省略.........