Lines Matching refs:option

84 bump_option(tcp_option *&option, size_t &length)
86 if (option->kind <= TCP_OPTION_NOP) {
88 option = (tcp_option *)((uint8 *)option + 1);
90 length += option->length;
91 option = (tcp_option *)((uint8 *)option + option->length);
102 tcp_option *option = (tcp_option *)buffer;
106 option->kind = TCP_OPTION_MAX_SEGMENT_SIZE;
107 option->length = 4;
108 option->max_segment_size = htons(segment.max_segment_size);
109 bump_option(option, length);
116 option->kind = TCP_OPTION_SACK_PERMITTED;
117 option->length = 2;
118 bump_option(option, length);
121 option->kind = TCP_OPTION_NOP;
122 bump_option(option, length);
123 option->kind = TCP_OPTION_NOP;
124 bump_option(option, length);
126 option->kind = TCP_OPTION_TIMESTAMP;
127 option->length = 10;
128 option->timestamp.value = htonl(segment.timestamp_value);
129 option->timestamp.reply = htonl(segment.timestamp_reply);
130 bump_option(option, length);
134 option->kind = TCP_OPTION_NOP;
135 bump_option(option, length);
136 option->kind = TCP_OPTION_NOP;
137 bump_option(option, length);
138 option->kind = TCP_OPTION_SACK_PERMITTED;
139 option->length = 2;
140 bump_option(option, length);
146 option->kind = TCP_OPTION_NOP;
147 bump_option(option, length);
149 option->kind = TCP_OPTION_WINDOW_SHIFT;
150 option->length = 3;
151 option->window_shift = segment.window_shift;
152 bump_option(option, length);
161 option->kind = TCP_OPTION_NOP;
162 bump_option(option, length);
163 option->kind = TCP_OPTION_NOP;
164 bump_option(option, length);
165 option->kind = TCP_OPTION_SACK;
166 option->length = 2 + sackCount * sizeof(tcp_sack);
167 memcpy(option->sack, segment.sacks, sackCount * sizeof(tcp_sack));
168 bump_option(option, length);
173 // options completely fill out the option space
177 option->kind = TCP_OPTION_END;
189 tcp_option *option;
193 (void **)&option) != B_OK) {
200 option = (tcp_option *)optionsBuffer;
206 switch (option->kind) {
212 if (option->length == 4 && size >= 4)
213 segment.max_segment_size = ntohs(option->max_segment_size);
216 if (option->length == 3 && size >= 3) {
218 segment.window_shift = option->window_shift;
222 if (option->length == 10 && size >= 10) {
224 segment.timestamp_value = ntohl(option->timestamp.value);
226 ntohl(option->timestamp.reply);
230 if (option->length == 2 && size >= 2)
234 if (size >= option->length) {
236 segment.sackCount = min_c((option->length - 2)
240 option->sack[i].left_edge);
242 option->sack[i].right_edge);
249 length = option->length;
254 option = (tcp_option *)((uint8 *)option + length);
540 tcp_control(net_protocol* _protocol, int level, int option, void* value,
546 if (option == NET_STAT_SOCKET)
550 return protocol->next->module->control(protocol->next, level, option,
556 tcp_getsockopt(net_protocol* _protocol, int level, int option, void* value,
562 return protocol->GetOption(option, value, _length);
564 return protocol->next->module->getsockopt(protocol->next, level, option,
570 tcp_setsockopt(net_protocol* _protocol, int level, int option,
576 if (option == SO_SNDBUF || option == SO_RCVBUF) {
583 if (option == SO_SNDBUF)
592 return protocol->SetOption(option, _value, length);
594 return protocol->next->module->setsockopt(protocol->next, level, option,