LibSWOC++ 1.5.14
Solid Wall of C++
Loading...
Searching...
No Matches
bwf_ip.h
Go to the documentation of this file.
1// SPDX-License-Identifier: Apache-2.0
2// Copyright Apache Software Foundation 2019
7
8#pragma once
9
10#include <iosfwd>
11#include <netinet/in.h>
12
13#include "swoc/swoc_version.h"
14#include "swoc/bwf_base.h"
15#include "swoc/swoc_ip.h"
16
17namespace swoc { inline namespace SWOC_VERSION_NS {
18
19// All of these expect the address to be in network order.
20BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, in6_addr const &addr);
21
22BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, sockaddr const *addr);
23
28
29inline BufferWriter &
30bwformat(BufferWriter &w, bwf::Spec const &spec, sockaddr_in const *addr) {
31 return bwformat(w, spec, reinterpret_cast<sockaddr const *>(addr));
32}
33inline BufferWriter &
34bwformat(BufferWriter &w, bwf::Spec const &spec, sockaddr_in6 const *addr) {
35 return bwformat(w, spec, reinterpret_cast<sockaddr const *>(addr));
36}
37
39
40// Use class information for ordering.
41BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP4Addr const &addr);
42
43BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP6Addr const &addr);
44
45BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPAddr const &addr);
46
47BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP4Srv const &addr);
48
49BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP6Srv const &addr);
50
51BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPSrv const &addr);
52
53BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP4Range const &range);
54
55BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP6Range const &range);
56
57BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPRange const &range);
58
59BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPRangeView const &range);
60
61BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPNet const &net);
62
63BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP4Net const &net);
64
65BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IP6Net const &net);
66
67BufferWriter &bwformat(BufferWriter &w, bwf::Spec const &spec, IPMask const &mask);
68
69inline BufferWriter &
70bwformat(BufferWriter &w, bwf::Spec const &spec, IPEndpoint const &addr) {
71 return bwformat(w, spec, &addr.sa);
72}
73
75static const size_t IP_STREAM_SIZE = 80;
76
77}} // namespace swoc::SWOC_VERSION_NS
78
79namespace std {
80inline ostream &
81operator<<(ostream &s, swoc::IP4Addr const &addr) {
82 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
83 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, addr);
84}
85
86inline ostream &
87operator<<(ostream &s, swoc::IP6Addr const &addr) {
88 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
89 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, addr);
90}
91
92inline ostream &
93operator<<(ostream &s, swoc::IPAddr const &addr) {
94 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
95 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, addr);
96}
97
98inline ostream &
99operator<<(ostream &s, swoc::IP4Range const &Range) {
100 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
101 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, Range);
102}
103
104inline ostream &
105operator<<(ostream &s, swoc::IP6Range const &Range) {
106 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
107 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, Range);
108}
109
110inline ostream &
111operator<<(ostream &s, swoc::IPRange const &Range) {
112 swoc::LocalBufferWriter<swoc::IP_STREAM_SIZE> w;
113 return s << bwformat(w, swoc::bwf::Spec::DEFAULT, Range);
114}
115
116} // namespace std
STL namespace.
For template deduction guides.
Definition ArenaWriter.cc:9
BufferWriter & bwformat(BufferWriter &w, bwf::Spec const &spec, std::string_view sv)
Definition bw_format.cc:649
static const self_type DEFAULT
Global default instance for use in situations where a format specifier isn't available.
Definition bwf_base.h:80