/*
- * Copyright 2014 Facebook, Inc.
+ * Copyright 2016 Facebook, Inc.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
*/
class IPAddress : boost::totally_ordered<IPAddress> {
public:
+ // returns true iff the input string can be parsed as an ip-address
+ static bool validate(StringPiece ip);
+
// return the V4 representation of the address, converting it from V6 to V4 if
// needed. Note that this will throw an IPAddressFormatException if the V6
// address is not IPv4Mapped.
: asV6().isLoopback();
}
+ // Return true if the address qualifies as link local
+ bool isLinkLocal() const {
+ return isV4() ? asV4().isLinkLocal()
+ : asV6().isLinkLocal();
+ }
+
// Return true if the address qualifies as broadcast.
bool isLinkLocalBroadcast() const {
return isV4() ? asV4().isLinkLocalBroadcast()
* @return IPAddress instance with bits set to 0
*/
IPAddress mask(uint8_t numBits) const {
- return isV4() ? IPAddress(std::move(asV4().mask(numBits)))
- : IPAddress(std::move(asV6().mask(numBits)));
+ return isV4() ? IPAddress(asV4().mask(numBits))
+ : IPAddress(asV6().mask(numBits));
}
/**