ss_data
ss_data **_ss_table = (ss_data **)NULL;
ss_data *infop;
ss_data *info;
ss_data *info;
ss_data *info;
ss_data *info;
ss_data *t;
#define size sizeof(ss_data *)
ss_data *new_table;
ss_data **table, **tmp;
new_table = (ss_data *) malloc(sizeof(ss_data));
if (table == (ss_data **) NULL) {
table = (ss_data **) malloc(2 * size);
table[0] = table[1] = (ss_data *)NULL;
for (sci_idx = 1; table[sci_idx] != (ss_data *)NULL; sci_idx++)
tmp = (ss_data **) realloc((char *)table,
table[sci_idx+1] = (ss_data *) NULL;
static ss_data *current_info;
ss_data *info;
ss_data *old_info = current_info;
ss_data *info;
ss_data *info;
ss_data *info = ss_info(sci_idx);
extern ss_data **_ss_table;
stcb->asoc.ss_data.last_out_stream = strq;
TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel,
return (TAILQ_EMPTY(&asoc->ss_data.out.wheel));
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream,
if (asoc->ss_data.last_out_stream == NULL) {
asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel,
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = NULL;
if (asoc->ss_data.locked_on_sending == strq) {
asoc->ss_data.locked_on_sending = NULL;
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke);
if (asoc->ss_data.locked_on_sending != NULL) {
KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled,
(void *)asoc->ss_data.locked_on_sending));
return (asoc->ss_data.locked_on_sending);
strqt = asoc->ss_data.last_out_stream;
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
if (strq == asoc->ss_data.last_out_stream) {
asoc->ss_data.last_out_stream = strq;
asoc->ss_data.locked_on_sending = strq;
asoc->ss_data.locked_on_sending = NULL;
asoc->ss_data.locked_on_sending = NULL;
strq = asoc->ss_data.locked_on_sending;
if (TAILQ_EMPTY(&asoc->ss_data.out.wheel)) {
TAILQ_INSERT_HEAD(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke);
strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel);
TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke);
return (asoc->ss_data.last_out_stream);
strqt = asoc->ss_data.last_out_stream;
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
if (strq == asoc->ss_data.last_out_stream) {
asoc->ss_data.last_out_stream = strq;
while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) {
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke);
asoc->ss_data.last_out_stream = NULL;
if (stcb->asoc.ss_data.locked_on_sending == with_strq) {
stcb->asoc.ss_data.locked_on_sending = strq;
if (stcb->asoc.ss_data.last_out_stream == with_strq) {
stcb->asoc.ss_data.last_out_stream = strq;
if (TAILQ_EMPTY(&asoc->ss_data.out.wheel)) {
TAILQ_INSERT_HEAD(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke);
strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel);
TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke);
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream,
if (asoc->ss_data.last_out_stream == NULL) {
asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel,
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = NULL;
if (asoc->ss_data.locked_on_sending == strq) {
asoc->ss_data.locked_on_sending = NULL;
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.prio.next_spoke);
if (asoc->ss_data.locked_on_sending != NULL) {
KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled,
(void *)asoc->ss_data.locked_on_sending));
return (asoc->ss_data.locked_on_sending);
strqt = asoc->ss_data.last_out_stream;
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
if (strq == asoc->ss_data.last_out_stream) {
asoc->ss_data.locked_on_sending = NULL;
asoc->ss_data.last_out_stream = NULL;
TAILQ_INIT(&asoc->ss_data.out.wheel);
while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) {
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke);
asoc->ss_data.last_out_stream = NULL;
if (stcb->asoc.ss_data.locked_on_sending == with_strq) {
stcb->asoc.ss_data.locked_on_sending = strq;
if (stcb->asoc.ss_data.last_out_stream == with_strq) {
stcb->asoc.ss_data.last_out_stream = strq;
TAILQ_INSERT_TAIL(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke);
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = TAILQ_PREV(asoc->ss_data.last_out_stream,
if (asoc->ss_data.last_out_stream == NULL) {
asoc->ss_data.last_out_stream = TAILQ_LAST(&asoc->ss_data.out.wheel,
if (asoc->ss_data.last_out_stream == strq) {
asoc->ss_data.last_out_stream = NULL;
if (asoc->ss_data.locked_on_sending == strq) {
asoc->ss_data.locked_on_sending = NULL;
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.fb.next_spoke);
if (asoc->ss_data.locked_on_sending != NULL) {
KASSERT(asoc->ss_data.locked_on_sending->ss_params.scheduled,
(void *)asoc->ss_data.locked_on_sending));
return (asoc->ss_data.locked_on_sending);
if (asoc->ss_data.last_out_stream == NULL ||
TAILQ_FIRST(&asoc->ss_data.out.wheel) == TAILQ_LAST(&asoc->ss_data.out.wheel, sctpwheel_listhead)) {
strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel);
strqt = TAILQ_NEXT(asoc->ss_data.last_out_stream, ss_params.ss.fb.next_spoke);
strqt = TAILQ_FIRST(&asoc->ss_data.out.wheel);
asoc->ss_data.locked_on_sending = strq;
asoc->ss_data.locked_on_sending = NULL;
asoc->ss_data.locked_on_sending = NULL;
TAILQ_FOREACH(strqt, &asoc->ss_data.out.wheel, ss_params.ss.fb.next_spoke) {
asoc->ss_data.last_out_stream = strq;
TAILQ_INIT(&asoc->ss_data.out.list);
while (!TAILQ_EMPTY(&asoc->ss_data.out.wheel)) {
strq = TAILQ_FIRST(&asoc->ss_data.out.wheel);
while (!TAILQ_EMPTY(&asoc->ss_data.out.list)) {
sp = TAILQ_FIRST(&asoc->ss_data.out.list);
TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next);
asoc->ss_data.last_out_stream = NULL;
if (stcb->asoc.ss_data.locked_on_sending == with_strq) {
stcb->asoc.ss_data.locked_on_sending = strq;
TAILQ_REMOVE(&asoc->ss_data.out.wheel, strq, ss_params.ss.rr.next_spoke);
if (stcb->asoc.ss_data.last_out_stream == with_strq) {
stcb->asoc.ss_data.last_out_stream = strq;
TAILQ_INSERT_TAIL(&asoc->ss_data.out.list, sp, ss_next);
return (TAILQ_EMPTY(&asoc->ss_data.out.list));
asoc->ss_data.last_out_stream = NULL;
TAILQ_REMOVE(&asoc->ss_data.out.list, sp, ss_next);
if (asoc->ss_data.locked_on_sending) {
return (asoc->ss_data.locked_on_sending);
sp = TAILQ_FIRST(&asoc->ss_data.out.list);
asoc->ss_data.last_out_stream = strq;
asoc->ss_data.locked_on_sending = strq;
asoc->ss_data.locked_on_sending = NULL;
asoc->ss_data.locked_on_sending = NULL;
if (stcb->asoc.ss_data.locked_on_sending == with_strq) {
stcb->asoc.ss_data.locked_on_sending = strq;
if (stcb->asoc.ss_data.last_out_stream == with_strq) {
struct scheduling_data ss_data;