2
Original copyright header listed below. This comes via rsync.
3
Any additional changes are provided via the same license as the original.
5
Copyright (C) 2011 Muhammad Umair
9
* Copyright (C) 1996-2001 Internet Software Consortium.
11
* Permission to use, copy, modify, and distribute this software for any
12
* purpose with or without fee is hereby granted, provided that the above
13
* copyright notice and this permission notice appear in all copies.
15
* THE SOFTWARE IS PROVIDED "AS IS" AND INTERNET SOFTWARE CONSORTIUM
16
* DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL
17
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL
18
* INTERNET SOFTWARE CONSORTIUM BE LIABLE FOR ANY SPECIAL, DIRECT,
19
* INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING
20
* FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT,
21
* NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION
22
* WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
30
#include <drizzled/field/ipv6.h>
32
#include <drizzled/error.h>
33
#include <drizzled/internal/my_sys.h>
34
#include <drizzled/session.h>
35
#include <drizzled/table.h>
42
IPv6::IPv6(unsigned char *ptr_arg,
44
unsigned char *null_ptr_arg,
45
unsigned char null_bit_arg,
46
const char *field_name_arg) :
47
Field(ptr_arg, len_arg,
55
int IPv6::cmp(const unsigned char *a, const unsigned char *b)
57
return memcmp(a, b, max_string_length());
60
int IPv6::store(const char *from, uint32_t, const charset_info_st * const )
62
ASSERT_COLUMN_MARKED_FOR_WRITE;
63
type::IPv6 ptr_address;
65
if (not ptr_address.inet_pton(from))
67
my_error(ER_INVALID_IPV6_VALUE, MYF(ME_FATALERROR));
71
ptr_address.store_object(ptr);
76
int IPv6::store(int64_t , bool )
78
ASSERT_COLUMN_MARKED_FOR_WRITE;
79
my_error(ER_INVALID_IPV6_VALUE, MYF(ME_FATALERROR));
83
int IPv6::store_decimal(const drizzled::type::Decimal*)
85
ASSERT_COLUMN_MARKED_FOR_WRITE;
86
my_error(ER_INVALID_IPV6_VALUE, MYF(ME_FATALERROR));
90
void IPv6::sql_type(String &res) const
92
res.set_ascii(STRING_WITH_LEN("ipv6"));
95
double IPv6::val_real() const
97
ASSERT_COLUMN_MARKED_FOR_READ;
98
my_error(ER_INVALID_IPV6_VALUE, MYF(ME_FATALERROR));
102
int64_t IPv6::val_int() const
104
ASSERT_COLUMN_MARKED_FOR_READ;
105
my_error(ER_INVALID_IPV6_VALUE, MYF(ME_FATALERROR));
109
String *IPv6::val_str(String *val_buffer, String *) const
111
const charset_info_st * const cs= &my_charset_bin;
112
uint32_t mlength= (type::IPv6::IPV6_BUFFER_LENGTH) * cs->mbmaxlen;
113
type::IPv6 ptr_address;
115
val_buffer->alloc(mlength);
116
char *buffer=(char*) val_buffer->ptr();
118
ASSERT_COLUMN_MARKED_FOR_READ;
120
ptr_address.restore_object(ptr);
121
ptr_address.inet_ntop(buffer);
123
val_buffer->length(type::IPv6::IPV6_DISPLAY_LENGTH);
128
void IPv6::sort_string(unsigned char *to, uint32_t length_arg)
130
assert(length_arg == type::IPv6::LENGTH);
131
memcpy(to, ptr, length_arg);
134
} /* namespace field */
135
} /* namespace drizzled */