Exemple #1
0
int
do_add (int argc, char **argv)
{
  int ret = -1;
  struct in6_addr sid;

  if (argc < 5)
    {
      printf ("Command line is not complete.\n");
      goto end;
    }

  if (inet_pton (AF_INET6, argv[3], &sid) != 1)
    {
      printf ("Error: inet6 prefix is expected rather than \"%s\".\n",
	      argv[3]);
      goto end;
    }

  params.sid = argv[3];
  params.func = argv[4];

  if (strcmp (argv[4], END) == 0)
    ret = add_end (argc, argv);

  else if (strcmp (argv[4], END_DX2) == 0)
    ret = add_end_dx2 (argc, argv);

  else if ((strcmp (argv[4], END_X) == 0) || (strcmp (argv[4], END_DX6) == 0))
    ret = add_end_x (argc, argv);

  else if (strcmp (argv[4], END_DX4) == 0)
    ret = add_end_dx4 (argc, argv);

  else if ((strcmp (argv[4], END_AD4) == 0)
	   || (strcmp (argv[4], END_EAD4) == 0))
    ret = add_end_ad4 (argc, argv);

  else if ((strcmp (argv[4], END_AM) == 0) || (strcmp (argv[4], END_AD6) == 0)
	   || (strcmp (argv[4], END_EAD6) == 0))
    ret = add_end_ad6 (argc, argv);

  else if (strcmp (argv[4], END_AS4) == 0)
    ret = add_end_as4 (argc, argv);

  else if (strcmp (argv[4], END_AS6) == 0)
    ret = add_end_as6 (argc, argv);


  else
    printf ("SRv6 behavior \"%s\" is not supported\n", argv[4]);

end:
  return ret;
}
Exemple #2
0
static void decompile_match_like(std::ostringstream &out, const char *name, ehval_p *paras, int level) {
	out << name << " " << paras[0]->decompile(level);
	for(ehval_p node = paras[1]; node->get<Enum_Instance>()->member_id != T_END; node = node->get<Enum_Instance>()->members[1]) {
		out << "\n";
		add_tabs(out, level + 1);
		Enum_Instance::t *inner_op = node->get<Enum_Instance>()->members[0]->get<Enum_Instance>();
		out << "case " << inner_op->members[0]->decompile(level + 1) << "\n";
		add_tabs(out, level + 2);
		out << inner_op->members[1]->decompile(level + 2);
	}
	add_end(out, level);
}
Exemple #3
0
/*---------------------------------------------------------------------------*/
static void send_discover(void) {
  uint8_t *end;
  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
  
  create_msg(m);
  
  end = add_msg_type(&m->options[4], DHCPDISCOVER);
  end = add_req_options(end);
  end = add_end(end);
  
  uip_send(uip_appdata, end - (uint8_t *)uip_appdata);
}
Exemple #4
0
static void
send_discover(void)
{
  uint8_t *end;
  struct dhcp_msg *m = (struct dhcp_msg *)&dhcp_msg_buf;

  create_msg(m);

  end = add_msg_type(&m->options[4], DHCPDISCOVER);
  end = add_req_options(end);
  end = add_end(end);

  uosFileWrite(s.conn, (void*)m, end - (uint8_t*)m);
}
Exemple #5
0
static void send_request (void)
{
  u8_t *end;
  dhcpMsg_t *m = (dhcpMsg_t *) uip_appdata;

  create_msg (m);

  end = add_msg_type (&m->options [4], DHCPREQUEST);
  end = add_server_id (end);
  end = add_req_ipaddr (end);
  end = add_end (end);

  uip_send (uip_appdata, end - (u8_t *) uip_appdata);
}
Exemple #6
0
/*---------------------------------------------------------------------------*/
static void
send_request(void)
{
  uint8_t *end;
  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;

  create_msg(m);
  
  end = add_msg_type(&m->options[4], DHCPREQUEST);
  end = add_server_id(end);
  end = add_req_ipaddr(end);
  end = add_end(end);
  
  uip_send(uip_appdata, (int)(end - (uint8_t *)uip_appdata));
}
Exemple #7
0
/*---------------------------------------------------------------------------*/
static void
send_request(void)
{
  uint8_t *end;
  struct dhcp_msg *m = (struct dhcp_msg *)&dhcp_msg_buf;

  create_msg(m);
  
  end = add_msg_type(&m->options[4], DHCPREQUEST);
  end = add_server_id(end);
  end = add_req_ipaddr(end);
  end = add_end(end);
  
  uosFileWrite(s.conn, (void*)m, end - (uint8_t*)m);
}
Exemple #8
0
main()
{
char ch;
B *headptr=0;
int node=0;
do
{
add_end(&headptr);
printf("do you want to add new node at end..Y/y\n");
scanf("  %c",&ch);
node++;
}while((ch=='Y')||(ch=='y'));
print(headptr);
printf("Total node=%d",node);
}
static void		make_list_item(char *str, t_pipe **start)
{
	if (str[0] == ';')
		add_end(str, 0, SEMICOL, start);
	else if (str[0] == '>' && str[1] == '>')
		add_end(str, 3, DB_AR_RIGHT, start);
	else if (str[0] == '|' && str[1] == '|')
		add_end(str, 1, OR, start);
	else if (str[0] == '&' && str[1] == '&')
		add_end(str, 1, AND, start);
	else if (str[0] == '>')
		add_end(str, 3, AR_RIGHT, start);
	else if (str[0] == '<' && str[1] == '<')
		add_end(str, 3, DB_AR_LEFT, start);
	else if (str[0] == '<')
		add_end(str, 3, AR_LEFT, start);
	else if (str[0] == '|' && str[1] == '\0')
		add_end(str, 2, PIPE, start);
	else
		add_end(str, 4, COM, start);
}
Exemple #10
0
/*---------------------------------------------------------------------------*/
static void
send_request(void)
{
  u8_t *end;
  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;

  create_msg(m);
  
  end = add_msg_type(&m->options[4], DHCPREQUEST);
  end = add_server_id(end);
  end = add_req_ipaddr(end);
  end = add_req_host_name(end, HOSTNAME);
  end = add_end(end);
  
  uip_send(uip_appdata, end - (u8_t *)uip_appdata);
}
  GeomTextDataViewer(BinaryDataEditor *owner, bool read_only)
  : BinaryDataViewer(owner), _text(mforms::VerticalScrollBar)
  {
    set_spacing(8);
    add(&_selector, false, true);
    add_end(&_text, true, true);
    _text.set_read_only(read_only && false);
    //TODO: data editing (need to figure out a way to send WKT data to the server when saving)

    _selector.add_item("View as WKT");
    _selector.add_item("View as GeoJSON");
    _selector.add_item("View as GML");
    _selector.add_item("View as KML");

    _selector.signal_changed()->connect(boost::bind(&GeomTextDataViewer::data_changed, this));
  }
Exemple #12
0
t_list          *put_in_list(t_var *var)
{
  t_list        *list;
  int   i;

  i = 0;
  list = NULL;
  while (var->land[i] != NULL)
    {
      list = add_end(list, var->land[i]);
      i++;
    }
  while (list->first != 1)
    list = list->next;
  return (list);
}
  ObjectSelectionPage::ObjectSelectionPage(WbPluginDbImport *form)
    : WizardObjectFilterPage(form, "objectFilter"), _box(false)
  {
    set_title(_("Select Objects to Reverse Engineer"));
    set_short_title(_("Select Objects"));

    _box.set_padding(12);
    add_end(&_box, false);
    
    _empty_label.set_text(_("The selected schemas contain no objects."));
    _box.add(&_empty_label, false);
    
    _autoplace_check.set_text(_("Place imported objects on a diagram"));
    _autoplace_check.set_active(true);
    _box.add(&_autoplace_check, false);    
  }
Exemple #14
0
int		main(int argc, char **argv)
{
	t_lists		lists;
	int			i;

	i = 1;
	if (argc == 1)
	{
		ft_putendl("non");
		return (0);
	}
	while (argv[i++])
		lists = add_head(&lists, argv[i]);
	lists = add_end(&lists, "end list");
	print_list(&lists);
	return (0);
}
  TextDataViewer(BinaryDataEditor *owner, const std::string &encoding, bool read_only)
  : BinaryDataViewer(owner), _text(), _encoding(encoding)
  {
    if (_encoding.empty())
      _encoding = "UTF-8";
    
    add(&_message, false, true);
    add_end(&_text, true, true);
    
    _text.set_language(mforms::LanguageNone);
    _text.set_features(mforms::FeatureWrapText, true);
    _text.set_features(mforms::FeatureReadOnly, read_only);
    
    scoped_connect(_text.signal_changed(),boost::bind(&TextDataViewer::edited, this));

    _text.set_show_find_panel_callback(boost::bind(&TextDataViewer::embed_find_panel, this, _2));
  }
Exemple #16
0
void add(list **start, list **end)       // add some new item in the end list
{
	int val;
	int fl = 0;
	cout << "        ###############################################################" << endl;
	cout << "        #                    ADD NEW ITEM IN THE LIST                 #" << endl;
	cout << "        #                        FOR EXIT PRESS 0                     #" << endl;
	cout << "        ###############################################################" << endl;
	val = scan_data();
	if (*end == NULL)
	{
		first_item(start, end);
	}
	while (val)
	{
		add_end(end, val);
		val = scan_data();

	}  // while
}
Exemple #17
0
void dhcpdPollHandler(void) {
  if (dhcpd_state == DHCPD_IDLE) return;

  printf("<<dhcp poll>> ");

  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;
  memcpy(m,(uint8_t*) &dhcp_header,sizeof(dhcp_header));

  m->op = DHCP_REPLY;
  //uip_ipaddr_t ipaddr;
  //uip_ipaddr( m->yiaddr, 192, 168, 12, 2);
  uip_ipaddr_copy(m->yiaddr,dhcpd_client_ipaddr);
  memset(m->ciaddr,0,4);
  //memset(m->siaddr,0,4);
  uip_ipaddr_copy(m->siaddr,uip_hostaddr);


  memcpy(m->options, magic_cookie, sizeof(magic_cookie));
  u8_t *end;
  switch (dhcpd_state) {
  case DHCPD_SEND_OFFER:
    end = add_msg_type(&m->options[4], DHCPOFFER);
    break;
  case DHCPD_SEND_ACK:
    end = add_msg_type(&m->options[4], DHCPACK);
    dhcpd_address_assigned(); // notify the rest of teh system
    break;
  default:
    return;
  }

  //end = add_subnetmask(end, 255,255,255,0);
  end = add_subnetmask(end, 255,255,255, 0xfc); // a /30 address
  end = add_lease_time(end);
  end = add_server_id_myself(end);
  //end = add_dns_server_myself(end);
  //end = add_domain_name(end);
  end = add_end(end);
  uip_send(uip_appdata, end - (u8_t *)uip_appdata);
  dhcpd_state = DHCPD_IDLE;
}
Exemple #18
0
/* Prepare DHCPv4 Message request and send it to peer */
static void send_request(struct net_if *iface, bool renewal)
{
	struct net_buf *buf;

	buf = prepare_message(iface, DHCPV4_MSG_TYPE_REQUEST);
	if (!buf) {
		goto fail;
	}

	if (!add_server_id(buf) ||
	    !add_req_ipaddr(buf) ||
	    !add_end(buf)) {
		goto fail;
	}

	setup_header(buf);

	if (net_send_data(buf) < 0) {
		goto fail;
	}

	if (renewal) {
		iface->dhcpv4.state = NET_DHCPV4_RENEWAL;
	} else {
		iface->dhcpv4.state = NET_DHCPV4_REQUEST;
	}

	iface->dhcpv4.attempts++;

	k_delayed_work_init(&iface->dhcpv4_timeout, dhcpv4_timeout);
	k_delayed_work_submit(&iface->dhcpv4_timeout, get_dhcpv4_timeout());

	return;

fail:
	NET_DBG("Message preparation failed");

	if (!buf) {
		net_nbuf_unref(buf);
	}
}
Exemple #19
0
int main()
{
	Node *head=NULL;
	int iRetCode=eFailed;
	
	iRetCode = add_begin(&head,11);
	LOG_CHECK_ERROR(iRetCode);
	
	iRetCode = add_begin(&head,22);
	LOG_CHECK_ERROR(iRetCode);
	
	iRetCode = add_begin(&head,33);
	LOG_CHECK_ERROR(iRetCode);

	iRetCode = add_end(&head,44);
	LOG_CHECK_ERROR(iRetCode);
	
	print(head);
	Reverse_list(&head);
	print(head);
Exit0:	
	return 0;	
}
Exemple #20
0
int main(void) {
    AddressBook *myabook;

    myabook = new_item("*****@*****.**", "foo", 1);
    
    /* Con la chiamata alla funzione add_front(), il nuovo elemento andra'
    in testa alla lista */
    myabook = add_front(myabook, new_item("*****@*****.**", "bar", 2));

    /* Con la chiamata alla funzione add_end(), il nuovo elemento andra'
    in coda alla lista */
    myabook = add_end(myabook, new_item("*****@*****.**", "baz", 3));

    // Stampa ciascun elemento della rubrica
    apply(myabook, print_values, "%d: <%s> \'%s\'\n");

    // Quanti elementi contiene la rubrica
    int n = 0;
    apply(myabook, count_elements, &n);
    printf("AddressBook contains \'%d\' elements\n", n);
    
    return(EXIT_SUCCESS);
}
Exemple #21
0
/* Prepare DHCPv4 Discover message and broadcast it */
static void send_discover(struct net_if *iface)
{
	struct net_buf *buf;

	iface->dhcpv4.xid++;

	buf = prepare_message(iface, DHCPV4_MSG_TYPE_DISCOVER);
	if (!buf) {
		goto fail;
	}

	if (!add_req_options(buf) ||
	    !add_end(buf)) {
		goto fail;
	}

	setup_header(buf);

	if (net_send_data(buf) < 0) {
		goto fail;
	}

	iface->dhcpv4.state = NET_DHCPV4_DISCOVER;

	k_delayed_work_init(&iface->dhcpv4_timeout, dhcpv4_timeout);
	k_delayed_work_submit(&iface->dhcpv4_timeout, get_dhcpv4_timeout());

	return;

fail:
	NET_DBG("Message preparation failed");

	if (!buf) {
		net_nbuf_unref(buf);
	}
}
int main()
{
	node_t head = NULL;
	node_t first = NULL;
	node_t second = NULL;
	node_t merged = NULL;
	int choice = 0;
	int ele;
	int pos;
	node_t node_pointer = NULL;
	int n;
	int is_cycle = 0;
	node_t list_cycle = NULL;
	int isPalindrome = 0;
	int intersection = 0;
	node_t resultant_of_addition = NULL;
	int k = 0;
	int m;


	while(1)
	{
		printf("--------------------------------------------------------------------------------------------------------\n");
		printf("1. Add node in the front end \n");
		printf("2. Display the list \n");
		printf("3. Exit \n");
		printf("4. Add node at the rear end of the list \n");
		printf("5. Delete a node at the front end of the list \n");
		printf("6. Delete a node from the rear end of the list \n");
		printf("7. Insert a node in order to the list \n");
		printf("8. Merge two ordered linked lists \n");
		printf("9. Search for an item in the list \n");
		printf("10. Delete a node whose value is specified \n");
		printf("11. Delete a node at the specified position \n");
		printf("12. Reverse  list wihtout creating extra nodes \n");
		printf("13. Delete a node given only a pointer to the node \n");
		printf("14. Print middle element of the list \n");
		printf("15. Print the nth last element in the list \n");
		printf("16. Delete the entire list \n");
		printf("17. Detect a loop in the list \n");
		printf("18. Check whether a list is a palindrome \n");
		printf("19. Find the intersection of two lists \n");
		printf("20. Print reverse recursively \n");
		printf("21. Remove duplicates in a sorted linked list \n");
		printf("22. Move the last node in the list to the first node \n");
		printf("23. Reverse the list pairwise \n");
		printf("24. Find the intersection of two lists recursively \n");
		printf("25. Delete alternate nodes in the list \n");
		printf("26. Alternating split of the list \n");
		printf("27. Delete nodes whose neighbours value is greater \n");
		printf("28. Sepearate into even and odd in that order \n");
		printf("29. Add two lists and give the resultant list \n");
		printf("30. Rotate the list by k elements \n");
		printf("31. Separate into 0s and 1s \n");
		printf("32. Delete n nodes after the first m nodes \n");
		printf("-------------------------------------------------------------------------------------------------------\n");

		printf("Enter the choice\n");
		scanf("%d", &choice);

		switch(choice)
		{
			case 1:

					printf("Enter the element to enter to the front end of the list \n");
					scanf("%d", &ele);
					head = add_front(head, ele);
					break;

			case 2:
					display(head);
					break;

			case 3:
					exit(0);

			case 4:
					printf("Enter an element to be added to the end of the list \n");
					scanf("%d", &ele);
					head = add_end(head, ele);
					break;

			case 5:
					head = delete_front(head);
					break;

			case 6:
					head = delete_rear(head);
					break;

			case 7:
					printf("Enter the element to be inserted \n");
					scanf("%d", &ele);
					head = insert_in_order(head, ele);
					break;

			case 8:

					first = insert_in_order(first, 92);
					first = insert_in_order(first, 42);
					first = insert_in_order(first, 35);

					second = insert_in_order(second, 100);
					second = insert_in_order(second, 432);
					second = insert_in_order(second, 90);
					second = insert_in_order(second, 10);


					printf("The elements of the first list are: \n");
					display(first);

					printf("The elements of the second list are \n");
					display(second);

					merged = merge_ordered_lists(first, second);
					printf("The ordered list is: \n");
					display(merged);

			case 9:
					printf("Enter the element of the list to be searched for \n");
					scanf("%d", &ele);
					int pos = search(head, ele);
					if(pos != -1)
					{
						printf("The element is found at %d: \n", pos);
					}
					else
					{
						printf("The element is not found in the list \n");
					}

					break;

			case 10:
					printf("Enter the element of the list to be deleted: \n");
					scanf("%d", &ele);
					head = delete_with_info(head, ele);

					if(head == (node_t)NULL)
					{
						printf("The list is empty or the element u specified is not found: \n");
					}
					break;

			case 11:
					printf("Enter the position with the first node as position 1 \n");
					scanf("%d", &ele);
					head = delete_with_pos(head, ele);

					if(head == (node_t)NULL)
					{
						printf("Either the list is empty or the position specified is not appropriate \n");
					}

					break;

			case 12:

					head = reverse(head);
					break;

			case 13:
					node_pointer = head -> link -> link;
					delete_node_given_pointer(node_pointer);
					break;

			case 14:
					 print_middle(head);
					 break;

			case 15:
					printf("Enter the value of n \n");
					scanf("%d",&n);
					print_nth_last(head, n);
					break;

			case 16:
					head = delete_list(head);
					break;

			case 17:

					list_cycle = add_end(list_cycle,1);
					list_cycle = add_end(list_cycle,2);
					list_cycle = add_end(list_cycle,3);
					list_cycle = add_end(list_cycle,4);
					list_cycle = add_end(list_cycle,5);
					list_cycle -> link -> link -> link -> link -> link = list_cycle -> link;
					is_cycle = find_cycle(list_cycle);
					if(is_cycle)
					{
						printf("There is a cycle in the list \n");

					}

					else
					{
						printf("There is no cycle in the list \n");
					}



					break;

			case 18:

					isPalindrome = is_palindrome(&head, head);
					if(isPalindrome)
					{
						printf("The list is a palindrome \n");
					}

					else
					{
						printf("The list is not a palindrome \n");
					}
					break;

			case 19:

					first = add_end(first,10);
					first = add_end(first,20);
					


					second = add_end(second,43);
					second = add_end(second,3);
					second = add_end(second,34);
					second = add_end(second,44);

					first -> link -> link = second -> link;


					intersection = find_intersection(first, second);
					printf("The intersection point of the two lists are %d \n", intersection);
					break;

			case 20:
					print_reverse_recursively(head);
					printf("\n");
					break;

			case 21:

					remove_duplicates(head);
					break;

			case 22:

					head = move_last_to_first(head);
					break;

			case 23:

					head = pairwise_reverse(head);
					break;

			case 24:

					first = add_end(first, 10);
					first = add_end(first, 30);
					first = add_end(first, 40);
					first = add_end(first, 50);
					first = add_end(first, 60);


					second = add_end(second, 10);
					second = add_end(second, 20);
					second = add_end(second, 30);


					find_common_recursively(first, second);
					break;

			case 25:
					head = delete_alternate(head);
					break;

			case 26:
					 alternating_split_v2(head);
					 break;

			case 27:
					head = delete_node_when_neigbour_higher(head);
					break;

			case 28:
					head = separate_into_even_odd_v2(head);
					break;

			case 29:
						first = add_front(first, 2);
						first = add_front(first, 4);
						first = add_front(first, 8);


						second = add_front(second,2);
						second = add_front(second,4);
						second = add_front(second,5);
						second = add_front(second,3);

						resultant_of_addition = add_two_lists(first, second);

						printf("The resultant list is as follows \n");
						display(resultant_of_addition);

						break;	

			case 30:
					printf("Enter the value of k \n");
					scanf("%d",&k);
					head = rotate_by_k(head, k);
					break;

			case 31:
					head = separate_into_zeroes_ones(head);
					break;

			case 32:
					printf("Enter the value of m \n");
					scanf("%d", &m);
					printf("Enter the value of n \n");
					scanf("%d", &n);
					head = retain_m_delte_n(head, m , n);
					break;



			default:
					printf("Invalid choice... Please try again \n");
					break;

		}

	}
}
Exemple #23
0
static void ICACHE_FLASH_ATTR send_ack(struct dhcps_msg *m)
{

		u8_t *end;
	    struct pbuf *p, *q;
	    u8_t *data;
	    u16_t cnt=0;
	    u16_t i;
        create_msg(m);

        end = add_msg_type(&m->options[4], DHCPACK);
        end = add_offer_options(end);
        end = add_end(end);

	    p = pbuf_alloc(PBUF_TRANSPORT, sizeof(struct dhcps_msg), PBUF_RAM);
#if DHCPS_DEBUG
		os_printf("udhcp: send_ack>>p->ref = %d\n", p->ref);
#endif
	    if(p != NULL){

#if DHCPS_DEBUG
	        os_printf("dhcps: send_ack>>pbuf_alloc succeed\n");
	        os_printf("dhcps: send_ack>>p->tot_len = %d\n", p->tot_len);
	        os_printf("dhcps: send_ack>>p->len = %d\n", p->len);
#endif
	        q = p;
	        while(q != NULL){
	            data = (u8_t *)q->payload;
	            for(i=0; i<q->len; i++)
	            {
	                data[i] = ((u8_t *) m)[cnt++];
#if DHCPS_DEBUG
					os_printf("%02x ",data[i]);
					if((i+1)%16 == 0){
						os_printf("\n");
					}
#endif
	            }

	            q = q->next;
	        }
	    }else{

#if DHCPS_DEBUG
	        os_printf("dhcps: send_ack>>pbuf_alloc failed\n");
#endif
	        return;
	    }
#if DHCPS_DEBUG
	    err_t SendAck_err_t = udp_sendto( pcb_dhcps, p, &broadcast_dhcps, DHCPS_CLIENT_PORT );
        os_printf("dhcps: send_ack>>udp_sendto result %x\n",SendAck_err_t);
#else
        udp_sendto( pcb_dhcps, p, &broadcast_dhcps, DHCPS_CLIENT_PORT );
#endif

	    if(p->ref != 0){
#if DHCPS_DEBUG
	        os_printf("udhcp: send_ack>>free pbuf\n");
#endif
	        pbuf_free(p);
	    }
}
Exemple #24
0
int main(void) {
	//struct list_node *list,*list2;
    struct list_node *list;
	list=NULL;

	print(list);

    printf("1\n");
	add_beg(&list,1);
	print(list);
    remove_beg(&list);
	print(list);

    printf("2\n");
	add_end(&list,1);
	print(list);
    remove_beg(&list);
	print(list);

    printf("3\n");  
	add_beg(&list,1);
	print(list);
    remove_beg(&list);
    //remove_end(&list);
	print(list);

    printf("4\n");
	add_end(&list,1);
	print(list);
    remove_beg(&list);
    //remove_end(&list);
	print(list);

    printf("5\n");
	add_beg(&list,1);
    print(list);
    add_beg(&list,2);
	print(list);
    remove_beg(&list);
	print(list);
    remove_beg(&list);
	print(list);

    printf("6\n");
	add_end(&list,1);
	print(list);
	add_end(&list,3);
	print(list);
	add_beg(&list,1);
	print(list);
    remove_beg(&list);
	print(list);
    remove_end(&list);
	print(list);
	add_end(&list,3);
	print(list);    
    remove_end(&list);
	print(list);
	add_end(&list,3);
	print(list);
    remove_beg(&list);
	print(list);

    remove_end(&list);
	print(list);
    remove_end(&list);
	print(list);
    remove_beg(&list);
	print(list);

	return 0;
}
node_t insert_in_table(node_t head, int ele)
{
	head = add_end(head, ele);
	return head;
}
Exemple #26
0
static void dhcpdHandlePacket(void) {
  struct dhcp_msg *m = (struct dhcp_msg *)uip_appdata;

  if (!ipaddr_set) {
    uip_ipaddr( ipaddr,                 10, 200, 0, 1);
    uip_ipaddr( dhcpd_client_ipaddr,    10, 200, 0, 2);
    uip_ipaddr( dhcpd_broadcast_ipaddr, 10, 200, 0, 3);
    uip_sethostaddr(ipaddr);
    ipaddr_set = 1;
  }

  printf("This is a DHCP broadcast op=%d ",m->op);
  if (m->op == DHCP_REQUEST) {
    //printf("xid = %02x %02x %02x %02x ",(m->xid)[0],(m->xid)[1],(m->xid)[2],(m->xid)[3]);
    //printf("secs = %02x ",m->secs);
    //printf("flags (bc?) = %02x ",m->flags);
    if (memcmp(m->options,magic_cookie,4)==0)
      printf("found magic cookie ");
    else {
      printf("magic cookie missing! ");
      return;
    }
    int type = parse_options(&m->options[4], uip_datalen());
    //printf("DHCP message type %d ",type);
    if (type == DHCPDISCOVER) {
      printf("<<discover>> ");
      memcpy((uint8_t*) &dhcp_header,m,sizeof(dhcp_header));
      dhcpd_state = DHCPD_SEND_OFFER;
      udp_poll_request = 1;
      return;


      m->op = DHCP_REPLY;
      uip_ipaddr_t ipaddr;
      //uip_ipaddr( m->yiaddr, 192, 168, 12, 2);
      uip_ipaddr_copy(m->yiaddr,dhcpd_client_ipaddr);
      memset(m->ciaddr,0,4);
      //memset(m->siaddr,0,4);
      uip_ipaddr_copy(m->siaddr,uip_hostaddr);

      u8_t *end;
      end = add_msg_type(&m->options[4], DHCPOFFER);
      //end = add_subnetmask(end, 255,255,255,0);
      end = add_subnetmask(end, 255,255,255, 0xfc); // a /30 address
      end = add_lease_time(end);
      end = add_server_id_myself(end);
      //end = add_dns_server_myself(end);
      //end = add_domain_name(end);
      end = add_end(end);

      uip_send(uip_appdata, end - (u8_t *)uip_appdata);
    }
    if (type == DHCPREQUEST) {
      printf("<<request>> ");
      memcpy((uint8_t*) &dhcp_header,m,sizeof(dhcp_header));
      dhcpd_state = DHCPD_SEND_ACK;
      udp_poll_request = 1;
      return;

      m->op = DHCP_REPLY;
      uip_ipaddr_t ipaddr;
      //uip_ipaddr( m->yiaddr,  192, 168, 12, 2);
      uip_ipaddr_copy(m->yiaddr,dhcpd_client_ipaddr);
      memset(m->ciaddr,0,4);
      //memset(m->siaddr,0,4);
      uip_ipaddr_copy(m->siaddr,uip_hostaddr);


      u8_t *end;
      end = add_msg_type(&m->options[4], DHCPACK);
      //end = add_subnetmask(end, 255,255,255,0);
      //end = add_subnetmask(end, 255,255,255, 0xfC); // a /30 address
      //end = add_subnetmask(end, 255,255,255, 0xfe); // a /31 address
      end = add_subnetmask(end, 255,255,255, 0xfc); // a /30 address
      end = add_lease_time(end);
      end = add_server_id_myself(end);
      //end = add_dns_server_myself(end);
      //end = add_domain_name(end);
      end = add_end(end);

      uip_send(uip_appdata, end - (u8_t *)uip_appdata);
      dhcpd_address_assigned(); // notify the rest of teh system
    }
  }
}
Exemple #27
0
std::string Node::decompile(int level) const {
	std::ostringstream out;
	const Node *op = this;
	if(op == nullptr) {
		return "";
	}
	switch(op->member_id) {
		case T_LITERAL:
			out << op->members[0]->decompile(level);
			break;
		case T_NULL:
			out << "()";
			break;
		case T_ANYTHING:
			out << "_";
			break;
		case T_ASSIGN:
			out << op->members[0]->decompile(level) << " = " << op->members[1]->decompile(level);
			break;
		case T_ADD:
			out << op->members[0]->decompile(level) << " + " << op->members[1]->decompile(level);
			break;
		case T_SUBTRACT:
			out << op->members[0]->decompile(level) << " - " << op->members[1]->decompile(level);
			break;
		case T_MULTIPLY:
			out << op->members[0]->decompile(level) << " * " << op->members[1]->decompile(level);
			break;
		case T_DIVIDE:
			out << op->members[0]->decompile(level) << " / " << op->members[1]->decompile(level);
			break;
		case T_MODULO:
			out << op->members[0]->decompile(level) << " % " << op->members[1]->decompile(level);
			break;
		case T_GREATER:
			out << op->members[0]->decompile(level) << " > " << op->members[1]->decompile(level);
			break;
		case T_BAR:
			out << op->members[0]->decompile(level) << " | " << op->members[1]->decompile(level);
			break;
		case T_COMMA:
		case T_MIXED_TUPLE:
			out << op->members[0]->decompile(level) << ", " << op->members[1]->decompile(level);
			break;
		case T_ACCESS:
			out << op->members[0]->decompile(level) << "." << op->members[1]->get<String>();
			break;
		case T_CALL_METHOD:
			out << op->members[0]->decompile(level) << "." << op->members[1]->get<String>() << "(" << op->members[2]->decompile(level) << ")";
			break;
		case T_CALL:
			out << op->members[0]->decompile(level) << " " << op->members[1]->decompile(level);
			break;
		case T_NOT:
			out << "!" << op->members[0]->decompile(level);
			break;
		case T_BINARY_COMPLEMENT:
			out << "~" << op->members[0]->decompile(level);
			break;
		case T_NAMED_ARGUMENT:
			out << op->members[0]->get<String>() << ": " << op->members[1]->decompile(level);
			break;
		case T_VARIABLE:
			out << op->members[0]->get<String>();
			break;
		case T_GROUPING:
			out << '(' << op->members[0]->decompile(level) << ')';
			break;
		case T_RANGE:
			out << op->members[0]->decompile(level) << " .. " << op->members[1]->decompile(level);
			break;
		case T_ARROW:
			// no space
			out << op->members[0]->decompile(level) << "->" << op->members[1]->decompile(level);
			break;
		case T_AND:
			out << op->members[0]->decompile(level) << " && " << op->members[1]->decompile(level);
			break;
		case T_OR:
			out << op->members[0]->decompile(level) << " || " << op->members[1]->decompile(level);
			break;
		case T_XOR:
			out << op->members[0]->decompile(level) << " ^^ " << op->members[1]->decompile(level);
			break;
		case T_SEPARATOR: {
			out << op->members[0]->decompile(level);
			ehval_p r = op->members[1];
			if(!Node::is_a(r) || r->get<Enum_Instance>()->member_id != T_SEPARATOR || r->get<Enum_Instance>()->member_id != T_END) {
				out << "\n";
				add_tabs(out, level);
				out << op->members[1]->decompile(level);
			}
			break;
		}
		case T_END:
			// ignore, used to end lists
			break;
		case T_THIS:
			out << "this";
			break;
		case T_SCOPE:
			out << "scope";
			break;
		case T_RET:
			out << "ret " << op->members[0]->decompile(level);
			break;
		case T_CLASS_MEMBER:
			out << op->members[0]->decompile(level) << op->members[1]->decompile(level);
			break;
		case T_ATTRIBUTE:
			out << op->members[0]->decompile(level) << " " << op->members[1]->decompile(level);
			break;
		case T_IF:
			decompile_if(out, op->members, level);
			add_end(out, level);
			break;
		case T_IF_ELSE:
			decompile_if(out, op->members, level);
			out << "\n";
			add_tabs(out, level);
			out << "else\n";
			add_tabs(out, level + 1);
			out << op->members[3]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_WHILE:
			out << "while " << op->members[0]->decompile(level) << "\n";
			add_tabs(out, level + 1);
			out << op->members[1]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_TRY:
			decompile_try_catch(out, op->members, level);
			add_end(out, level);
			break;
		case T_TRY_FINALLY:
			decompile_try_catch(out, op->members, level);
			out << "\n";
			add_tabs(out, level);
			out << "finally\n";
			add_tabs(out, level + 1);
			out << op->members[2]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_NAMED_CLASS:
			out << "class " << op->members[0]->get<String>() << "\n";
			add_tabs(out, level + 1);
			out << op->members[1]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_ENUM:
			out << "enum " << op->members[0]->get<String>() << "\n";
			add_tabs(out, level + 1);
			// decompile member list
			for(ehval_p node = op->members[1]; ; node = node->get<Enum_Instance>()->members[1]) {
				ehval_p current_member;
				bool is_last;
				if(node->get<Enum_Instance>()->member_id == T_COMMA) {
					current_member = node->get<Enum_Instance>()->members[0];
					is_last = false;
				} else {
					current_member = node;
					is_last = true;
				}

				// handle the member
				out << current_member->get<Enum_Instance>()->members[0]->get<String>();
				if(current_member->get<Enum_Instance>()->member_id == T_ENUM_WITH_ARGUMENTS) {
					out << "(";
					for(ehval_p argument = current_member->get<Enum_Instance>()->members[1]; ; argument = argument->get<Enum_Instance>()->members[1]) {
						ehval_p name = Node::is_a(argument) ? ehval_p(argument->get<Enum_Instance>()->members[0]) : argument;
						out << name->get<String>();
						if(!Node::is_a(argument) || argument->get<Enum_Instance>()->member_id != T_COMMA) {
							break;
						} else {
							out << ", ";
						}
					}
					out << ")";
				}

				if(is_last) {
					break;
				} else {
					out << ", ";
				}
			}
			out << "\n";
			add_tabs(out, level + 1);
			// decompile code
			out << op->members[2]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_CLASS:
			out << "class\n";
			add_tabs(out, level + 1);
			out << op->members[0]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_FUNC:
			out << "func: " << op->members[0]->decompile(level) << "\n";
			add_tabs(out, level + 1);
			out << op->members[1]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_MATCH:
			decompile_match_like(out, "match", op->members, level);
			break;
		case T_FOR:
			out << "for " << op->members[0]->decompile(level) << "\n";
			add_tabs(out, level + 1);
			out << op->members[1]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_FOR_IN:
			out << "for " << op->members[0]->decompile(level) << " in " << op->members[1]->decompile(level) << "\n";
			add_tabs(out, level + 1);
			out << op->members[2]->decompile(level + 1);
			add_end(out, level);
			break;
		case T_ARRAY_LITERAL:
			out << "[";
			for(ehval_p n = op->members[0]; n->get<Enum_Instance>()->member_id != T_END; n = n->get<Enum_Instance>()->members[1]) {
				Enum_Instance::t *member_op = n->get<Enum_Instance>()->members[0]->get<Enum_Instance>();
				out << member_op->members[0]->decompile(level);
				if(member_op->member_id == T_ARRAY_MEMBER) {
					out << " => " << member_op->members[1]->decompile(level);
				}
				if(n->get<Enum_Instance>()->members[1]->get<Enum_Instance>()->member_id != T_END) {
					out << ", ";
				}
			}
			out << "]";
			break;
		case T_MATCH_SET:
			out << "@";
			out << op->members[0]->get<String>();
			break;
		case T_HASH_LITERAL:
			out << "{";
			for(ehval_p n = op->members[0]; n->get<Enum_Instance>()->member_id != T_END; n = n->get<Enum_Instance>()->members[1]) {
				Enum_Instance::t *member_op = n->get<Enum_Instance>()->members[0]->get<Enum_Instance>();
				out << member_op->members[0]->decompile(level);
				out << ": " << member_op->members[1]->decompile(level);
				if(n->get<Enum_Instance>()->members[1]->get<Enum_Instance>()->member_id != T_END) {
					out << ", ";
				}
			}
			out << "}";
			break;
		case T_COMMAND:
			out << "$" << op->members[0]->get<String>();
			for(ehval_p node = op->members[1]; node->get<Enum_Instance>()->member_id != T_END; node = node->get<Enum_Instance>()->members[1]) {
				Enum_Instance::t *node2 = node->get<Enum_Instance>()->members[0]->get<Enum_Instance>();
				switch(node2->member_id) {
					case T_SHORTPARA:
						out << " -" << node2->members[0]->decompile(level);
						out << "=" << node2->members[1]->decompile(level);
						break;
					case T_LONGPARA:
						out << " --" << node2->members[0]->decompile(level);
						out << "=" << node2->members[1]->decompile(level);
						break;
					default:
						out << " " << node->get<Enum_Instance>()->members[0]->decompile(level);
						break;
				}
			}
			out << "\n";
			break;
		default:
			out << "(cannot decode value: " << op->member_id << ")";
			break;
	}
	return out.str();
}