@@ -46,7 +46,8 @@ namespace {
46
46
return addr ;
47
47
}
48
48
49
- TMaybe < TString > SerializeAddress (const TIpv6Address & addr ) {
49
+ TString SerializeAddress (const TIpv6Address & addr ) {
50
+ Y_ENSURE (addr .Type () == TIpv6Address ::Ipv4 || addr .Type () == TIpv6Address ::Ipv6 );
50
51
TString res ;
51
52
ui128 x = addr ;
52
53
if (addr .Type () == TIpv6Address ::Ipv4 ) {
@@ -69,16 +70,16 @@ namespace {
69
70
ui8 (x >> 8 & 0xff ), ui8 (x & 0xff )
70
71
};
71
72
res = TString (reinterpret_cast < const char * > (& addr6 ), sizeof addr6 );
72
- } else {
73
- return Nothing ();
74
73
}
75
74
return res ;
76
75
}
77
76
78
77
SIMPLE_STRICT_UDF (TFromString , TOptionalString (TAutoMapString )) {
79
78
TIpv6Address addr = TIpv6Address ::FromString (args [0 ].AsStringRef ());
80
- auto res = SerializeAddress (addr );
81
- return res ? valueBuilder -> NewString (res .GetRef ()) : TUnboxedValue ();
79
+ if (addr .Type () != TIpv6Address ::Ipv4 && addr .Type () != TIpv6Address ::Ipv6 ) {
80
+ return TUnboxedValue ();
81
+ }
82
+ return valueBuilder -> NewString (SerializeAddress (addr ));
82
83
}
83
84
84
85
SIMPLE_UDF (TToString , char * (TAutoMapString )) {
@@ -124,7 +125,7 @@ namespace {
124
125
} else if (ref .Size () == 4 ) {
125
126
TIpv6Address addr4 = DeserializeAddress (ref );
126
127
auto addr6 = TIpv6Address (ui128 (addr4 ) | ui128 (0xFFFF ) << 32 , TIpv6Address ::Ipv6 );
127
- return valueBuilder -> NewString (SerializeAddress (addr6 ). GetRef () );
128
+ return valueBuilder -> NewString (SerializeAddress (addr6 ));
128
129
} else {
129
130
ythrow yexception () << "Incorrect size of input, expected "
130
131
<< "4 or 16, got " << ref .Size ();
@@ -154,7 +155,7 @@ namespace {
154
155
<< "4 or 16, got " << ref .Size ();
155
156
}
156
157
TIpv6Address beg = LowerBoundForPrefix (addr , subnetSize );
157
- return valueBuilder -> NewString (SerializeAddress (beg ). GetRef () );
158
+ return valueBuilder -> NewString (SerializeAddress (beg ));
158
159
}
159
160
160
161
#define EXPORTED_IP_BASE_UDF \
0 commit comments