Example #1
0
int			main(int argc, char **argv)
{
  struct termios	oldline;
  t_area		ar;

  if (argc > 1)
    {
      non_canonical_mode(&oldline);
      init_term(&ar, argv, argc);
      display_arguments(&ar);
      while ((ar.len = read(0, ar.buff, sizeof(ar.buff))))
	{
	  x_read(ar.len);
	  init_lines(&ar, &oldline);
	  check_ctrl(&ar);
	  check_keys(&ar, ar.len);
	  check_select(&ar);
	  if (my_exit(&oldline, &ar) == 1 || void_exit(&ar, &oldline) == 1)
	    return (EXIT_SUCCESS);
	}
      restore_mode(&oldline, &ar);
      free_struct(&ar);
    }
  else
    my_put_error(ERR_ARGV);
  return (EXIT_SUCCESS);
}
Example #2
0
/* open file descriptor and attach */
static int dl_open(const char *dev, int unit, int *fd){
	dl_attach_req_t *attach_req = (dl_attach_req_t *)ctl_area;

	if((*fd = open(dev, O_RDWR)) == -1){
		printf(_("Error: DLPI stream API failed to get MAC in dl_attach_req/open(%s..): %s.\n"), dev, strerror(errno));
		exit(STATE_UNKNOWN);
		}
	attach_req->dl_primitive = DL_ATTACH_REQ;
	attach_req->dl_ppa = unit;
	put_ctrl(*fd, sizeof(dl_attach_req_t), 0);
	get_msg(*fd);
	return check_ctrl(DL_OK_ACK);
	}
Example #3
0
/* send DL_BIND_REQ */
static int dl_bind(int fd, int sap, u_char *addr){
	dl_bind_req_t *bind_req = (dl_bind_req_t *)ctl_area;
	dl_bind_ack_t *bind_ack = (dl_bind_ack_t *)ctl_area;

	bind_req->dl_primitive = DL_BIND_REQ;
	bind_req->dl_sap = sap;
	bind_req->dl_max_conind = 1;
	bind_req->dl_service_mode = DL_CLDLS;
	bind_req->dl_conn_mgmt = 0;
	bind_req->dl_xidtest_flg = 0;
	put_ctrl(fd, sizeof(dl_bind_req_t), 0);
	get_msg(fd);
	if (GOT_ERR == check_ctrl(DL_BIND_ACK)){
		printf(_("Error: DLPI stream API failed to get MAC in dl_bind/check_ctrl(): %s.\n"), strerror(errno));
		exit(STATE_UNKNOWN);
		}
	bcopy((u_char *)bind_ack + bind_ack->dl_addr_offset, addr,
	      bind_ack->dl_addr_length);

	return 0;
	}